-
FlutterRender分析
-
FlutterView分析
-
总结(类图,架构图)
-
- 类关系图
-
架构图
=================================================================
通过前面文章的分析我们了解到FlutterActivity的显示最终是通过FlutterView进行渲染。本文我们深入FlutterView的源码来具体分析下Flutter UI是如何一步步显示到Activity,又是如何跟Flutter Engine关联,下面来看一下FlutterView的大致相关类:
==========================================================================
要了解FlutterView我们首先来了解一下Flutter的RenderMode
,在Flutter里面渲染模式分为三种:RenderMode.surface、RenderMode.texture、RenderMode.image,前面两种模式是在接口FlutterActivityAndFragmentDelegate.Host接口getRenderMode()方法中返回,其内部的判断条件在FlutterActivity和FlutterFragment中是不一样的:
- FlutterActivity
public RenderMode getRenderMode() {
return getBackgroundMode() == BackgroundMode.opaque ? RenderMode.surface : RenderMode.texture;
}
说白了在FlutterActivity中RenderMode就是根据是否透明来决定,如果是透明窗体那么就使用RenderMode.texture
,如果是不透明的就是用RenderMode.surface
- FlutterFragment
public RenderMode getRenderMode() {
String renderModeName =
getArguments().getString(ARG_FLUTTERVIEW_RENDER_MODE, RenderMode.surface.name());
return RenderMode.valueOf(renderModeName);
}
而在FlutterFragment中RenderMode是通过ARG_FLUTTERVIEW_RENDER_MODE
参数来决定。