Flutter Widget / Android View

Android View

矩形区域

负责绘制图和事件处理

小部件基类

Activity、PhoneWindow、DecorView 三者关系 

DecorView为整个Window界面的最顶层View

View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw()

各步骤的主要工作:

  • OnMeasure():测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure。

  • OnLayout():确定View位置,进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步measure子View所得到的布局大小和布局参数,将子View放在合适的位置上。

  • OnDraw():绘制视图。ViewRoot创建一个Canvas对象,然后调用OnDraw()。六个步骤:①、绘制视图的背景;②、保存画布的图层(Layer);③、绘制View的内容;④、绘制View子视图,如果没有就不用;⑤、还原图层(Layer);⑥、绘制滚动条。

invalidate()函数的主要作用是请求View树进行重绘,该函数可以由应用程序调用,或者由系统函数间接调用,例如setEnable(), setSelected(), setVisiblity()都会间接调用到invalidate()来请求View树重绘,更新View树的显示。

Flutter Widget

widget 很轻量,部分原因在于它们的不可变性。因为它们本身既非视图,也不会直接绘制任何内容,而是 UI 及其底层创建真正视图对象。

创建时执行生命周期函数:

03-07 13:55:37.081 6379-6402/? I/flutter: TwoPage_initState
03-07 13:55:37.081 6379-6402/? I/flutter: TwoPage_didChangeDependencies
03-07 13:55:37.081 6379-6402/? I/flutter: TwoPage_build
刷新界面时执行生命周期函数:

03-07 13:55:49.205 6379-6402/? I/flutter: TwoPage_didUpdateWidget
03-07 13:55:49.205 6379-6402/? I/flutter: TwoPage_build
销毁时执行生命周期函数:

03-07 14:00:32.676 6379-6402/? I/flutter: TwoPage_deactivate
03-07 14:00:32.679 6379-6402/? I/flutter: TwoPage_dispose

Flutter Navigation drawer 导航抽屉

猜你喜欢

转载自blog.csdn.net/u013491829/article/details/114481789