最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn)

 更新時(shí)間:2020年03月30日 11:48:12   作者:一禪小和尚  
這篇文章主要介紹了新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

FlutterSDK升級(jí)后,我們發(fā)現(xiàn)不能按照原來(lái)的方式集成到已有Android項(xiàng)目中了,因?yàn)闆](méi)有了Flutter這個(gè)類(lèi),通過(guò)閱讀源碼我找到了新的使用方式。

一、創(chuàng)建Flutter Module

在已有Android工程中集成flutter,可以使用AndroidStudio的new Flutter Module實(shí)現(xiàn),方便快捷。

找到FlutterModule,一連串的next操作即可

創(chuàng)建完成后我們的項(xiàng)目中會(huì)多一個(gè)叫做flutter的module

并且在項(xiàng)目的setting.gradle文件中會(huì)自動(dòng)添加如下幾行代碼,

setBinding(new Binding([gradle:this]))
evaluate(
  new File(
    settingsDir,
    'flutter_module/.android/include_flutter.groovy'
  )
)
include ':flutter_module'

最后我們只需在app的build.gradle中引用這個(gè)flutter模塊即可

implementation project(path: ':flutter')

二、使用Flutter

兩種使用方式,F(xiàn)lutterView和FlutterFragment。

首先在Application中初始化

public class MVApplication extends Application {
 private static MVApplication instance;
 public static MVApplication getInstance(){
  return instance;
 }
 @Override
 public void onCreate() {
  super.onCreate();
  FlutterMain.Settings settings=new FlutterMain.Settings();
  settings.setLogTag("MyFlutter");
  FlutterMain.startInitialization(this,settings);
  String[] args = {"info", "data"};
  FlutterMain.ensureInitializationComplete(this,args);
  instance=this;
 }
}

1、使用FlutterFragment

新版本的FlutterSDK不再支持已經(jīng)沒(méi)有Flutter類(lèi),不再支持諸如Flutter.createView()、Flutter.createFragment()等用法,通過(guò)閱讀其源碼我們可以找到FlutterFragment的新用法,代碼如下:

public class MyFlutterActivity extends FragmentActivity {
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.flutter_layout);
  //FlutterFragment fragment=new FlutterFragment();
  FlutterFragment fragment=FlutterFragment.withNewEngine().initialRoute("home").build();
  getSupportFragmentManager().beginTransaction().add(R.id.flutter_container, fragment).commit();
 }
}

代碼中FlutterFragment的創(chuàng)建也可以直接使用默認(rèn)的構(gòu)造方法,這樣加載main.dart中的默認(rèn)路由,即''/'',給出的示例代碼中我們通過(guò)調(diào)用FlutterFragment.withNewEngine().initialRoute("home").build()創(chuàng)建了新的NewEngineFragmentBuilder來(lái)構(gòu)建指定路由的FlutterFragment。

2、使用FlutterView

FlutterView的創(chuàng)建同樣不能使用老版本的方法了,新版本的使用方法代碼如下:

public class MyFlutterActivity extends FragmentActivity {
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.flutter_layout);
  FrameLayout frameLayout=findViewById(R.id.flutter_container);
  ProgressBar progress=findViewById(R.id.progress);
  //創(chuàng)建FlutterView
  FlutterView flutterView=new FlutterView(this);
  //創(chuàng)建FlutterView首幀渲染完成監(jiān)聽(tīng)
  flutterView.addFirstFrameListener(new FlutterView.FirstFrameListener() {
   @Override
   public void onFirstFrame() {
    //隱藏進(jìn)度條,顯示FlutterView
    progress.setVisibility(View.GONE);
    frameLayout.setVisibility(View.VISIBLE);
   }
  });
  //創(chuàng)建dart代碼執(zhí)行器
  DartExecutor executor=flutterView.getDartExecutor();
  //執(zhí)行main.dart中的main函數(shù)
  executor.executeDartEntrypoint(
    new DartExecutor.DartEntrypoint(FlutterMain.findAppBundlePath(),
      "main"));
  //將FlutterView添加到布局中
  ViewGroup.LayoutParams layoutParams=new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
    FrameLayout.LayoutParams.MATCH_PARENT);
  frameLayout.addView(flutterView);
 }
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <FrameLayout
  android:id="@+id/flutter_container"
  android:visibility="invisible"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

 </FrameLayout>
 <ProgressBar
  android:id="@+id/progress"
  android:layout_width="45dp"
  android:layout_height="45dp"
  android:layout_centerVertical="true"
  android:layout_centerHorizontal="true"
  android:visibility="visible"
  >
 </ProgressBar>
</RelativeLayout>

效果如下圖:

到此這篇關(guān)于新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Flutter集成到已有Android項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android SQLite基本用法詳解

    Android SQLite基本用法詳解

    這篇文章主要介紹了Android SQLite基本用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android中實(shí)現(xiàn)長(zhǎng)按照片彈出右鍵菜單功能的實(shí)例代碼

    Android中實(shí)現(xiàn)長(zhǎng)按照片彈出右鍵菜單功能的實(shí)例代碼

    這篇文章主要介紹了Android中實(shí)現(xiàn)長(zhǎng)按照片彈出右鍵菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件

    Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件

    今天小編就為大家分享一篇關(guān)于Android為T(mén)iny4412設(shè)備驅(qū)動(dòng)在proc目錄下添加一個(gè)可讀版本信息的文件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Android自定義View實(shí)現(xiàn)兩種二維碼的掃描效果

    Android自定義View實(shí)現(xiàn)兩種二維碼的掃描效果

    這篇文章主要為大家詳細(xì)介紹了Android如何自定義View實(shí)現(xiàn)兩種二維碼的掃描效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Android UI實(shí)現(xiàn)單行文本水平觸摸滑動(dòng)效果

    Android UI實(shí)現(xiàn)單行文本水平觸摸滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Android UI實(shí)現(xiàn)單行文本水平觸摸滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android仿QQ復(fù)制昵稱(chēng)效果

    Android仿QQ復(fù)制昵稱(chēng)效果

    這幾天做一個(gè)復(fù)制文本的需求,突然看到QQ上復(fù)制昵稱(chēng)跟QQ號(hào)的效果,覺(jué)得很不錯(cuò),就想要模仿一波,辦法比較簡(jiǎn)單粗暴,反編譯QQ獲取了那個(gè).9圖片,然后就是用PopWindow實(shí)現(xiàn)了,需要的朋友可以參考下
    2019-05-05
  • Android開(kāi)發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二)

    Android開(kāi)發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二)

    我們?cè)趯?shí)際開(kāi)發(fā)中,有的時(shí)候需要儲(chǔ)存或者備份比較復(fù)雜的數(shù)據(jù)。這些數(shù)據(jù)的特點(diǎn)是,內(nèi)容多、結(jié)構(gòu)大,比如短信備份等,通過(guò)本文給大家介紹Android開(kāi)發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二),對(duì)android數(shù)據(jù)存儲(chǔ)方式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Android屏蔽軟鍵盤(pán)自動(dòng)彈出的解決方案

    Android屏蔽軟鍵盤(pán)自動(dòng)彈出的解決方案

    在編輯框輸入內(nèi)容時(shí)會(huì)彈出軟鍵盤(pán),而手機(jī)屏幕區(qū)域有限往往會(huì)遮住輸入界面,怎么實(shí)現(xiàn)這種效果呢?下面小編給大家分享了Android屏蔽軟鍵盤(pán)自動(dòng)彈出的解決方案,需要的朋友參考下吧
    2017-01-01
  • Android Studio輕松構(gòu)建自定義模板的步驟記錄

    Android Studio輕松構(gòu)建自定義模板的步驟記錄

    這篇文章主要給大家介紹了關(guān)于Android Studio輕松構(gòu)建自定義模板的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Android利用Senser實(shí)現(xiàn)不同的傳感器

    Android利用Senser實(shí)現(xiàn)不同的傳感器

    這篇文章主要為大家詳細(xì)介紹了Android利用Senser實(shí)現(xiàn)不同傳感器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評(píng)論

临夏县| 缙云县| 什邡市| 桦甸市| 苍南县| 朝阳市| 辽宁省| 丰原市| 龙泉市| 哈密市| 荆门市| 樟树市| 千阳县| 巴塘县| 进贤县| 宜兰县| 连州市| 区。| 宽城| 建宁县| 河池市| 新闻| 太和县| 平泉县| 襄城县| 康乐县| 阳原县| 云和县| 平度市| 普定县| 宝鸡市| 荥经县| 娄底市| 湘潭市| 合肥市| 讷河市| 江源县| 太仆寺旗| 泾阳县| 定陶县| 泗水县|