Android中使用Flutter来进行UI的展示步骤也很简单,在此简单做个笔记总结下。

  • 使用Android studio在FA_DEMO目录下创建一个Android项目,项目名称在此为Android

  • 在FAndroid目录下使用flutter create -t module module_flutter命令创建一个名为module_flutter的flutter module工程。当然也可以直接用Android Studio的new
    flutter project 创建一个flutter工程。
    创建好的目录在Windows系统下如下所示:

  • 修改setting.gradle文件 ,加入如下代码:

include ':app'//加入如下代码,可能Binding会显示红色,as提示让你import一个包,不必理会setBinding(new Binding([gradle: this]))evaluate(new File(  settingsDir.parentFile,  'module_flutter\\.android\\include_flutter.groovy'))
  • 修改app的build.gradle,加入下面一行:
 implementation project(':flutter')

然后在sync一下项目,或者在Android项目下执行gradlew build命令。即可成功构建一个Flutter和android 混合的项目。

需要注意的是,在flutter这个module的build.gralde其minSdkVersion=16,如图:

所以Android app 的build.gralde的minSdkVersion也需要设置为>=16.然后将我们的MainActivity修改为如下即可

//注意继承的是AppCompatActivity public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //使用Flutter创建一个VIew        View flutterView = Flutter.createView(this,getLifecycle(),"rout");        //设置全屏        FrameLayout.LayoutParams params =                new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);        //使用flutterView        setContentView(flutterView,params);    }}

运行效果如下:

其实,学过Flutter的应该熟悉这个页面,我们创建Flutter工程的时候默认的就是这个应用界面。其源码就在FA_DEMO\module_flutter\lib文件加下的main.dart文件。如果想要使用其他的flutter页面修改这个main.dart文件即可。

Android flutter的混合开发就是这么简单(从战略上藐视),本篇只是简单的介绍一下混合flutter的基础步骤,至于Android flutter怎么传值和交互,后面对另外说明。


另外发现了没有,既然Flutter.createView创建的是一个View,我们可以把这个FlutterView放在Android 某个ViewGroup的子View中,所以上面代码修改如下:

public class MainActivity extends AppCompatActivity {   //flutterView的parentView    FrameLayout frameLayout;     protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //设置跟布局        setContentView(R.layout.activity_main);               frameLayout = findViewById(R.id.flutter_content);        View flutterView = Flutter.createView(this,getLifecycle(),"rout");        FrameLayout.LayoutParams params =                new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);//             //将flutterView作为childView 添加到frameLayout中。        frameLayout.addView(flutterView,params);    }}

对应的activity_main.xml如下:

<?xml version="1.0" encoding="utf-8"?>        

运行走起,效果见下图:


另外我们知道flutter是由路由跳转的页面的,那么我们将博主之前写的flutter的demo嵌入到我们这个项目中会如何呢(该demo的说明详见博主的此篇博客--Flutter动画初探)?
替换也很简单,下载demo的源码,结构如下:
将上图中红色矩形框里的文件复制粘贴到module_flutter文件加下并替换原有的lib和pubspec.yaml文件,然后在module_flutter运行flutter packages get。而后重新运行Android项目,效果如下(粉红色的部分为Android原生的View):


上图粉红色背景下面的内容就是flutter的一个listView,点击其中某一个item进行路由跳转,效果如下 :

其实通过flutter路由跳转这一特性,我们可以在一个Activity的UI中进行局部页面跳转效果。

到此为止博文结束,如有不当的地方欢迎批评指正

更多相关文章

  1. Android(安卓)的开源电话/通讯/IM聊天项目全集
  2. unity3d + android 好东西。。。
  3. Android(安卓)Studio 简单介绍和使用问题小结
  4. 【起航计划 016】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
  5. 如何使Android应用程序获取系统权限【转】
  6. 通过终端命令生成并在手机上运行dex文件
  7. Android(安卓)开发简介
  8. 【基于zxing的编解码实战】zxing项目源码解读(2.3.0版本,Android部
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android基础知识之API等级介绍
  2. 【android】ORMLite框架 的使用方法---给
  3. Android中有用的组件被选中和按下去的变
  4. Android解析XML文件的三种方式
  5. android rootfs
  6. Android通过RSA加密解密实现License
  7. Ubuntu 12.04 64bit 配置完android 5.0编
  8. Android的一个技巧
  9. Android App兼容8.0和9.0
  10. Android WheelView(滑轮组件)使用