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