DecorView
2016-05-02 15:22:36 0 举报
DecorView是Android中的一个核心组件,它是整个窗口的根视图。它位于WindowManagerService中,负责管理所有的子视图,包括标题栏、状态栏等。DecorView的主要作用是为子视图提供一个绘制的舞台,同时处理用户的输入事件。在Activity的生命周期中,DecorView会被添加到WindowManager中,并随着Activity的创建和销毁而创建和销毁。通过设置DecorView的背景,我们可以自定义Activity的整体风格。总之,DecorView是Android应用程序中非常重要的一个组件,它为开发者提供了一个灵活的方式来构建用户界面。
作者其他创作
大纲/内容
WindowManagerGlobal.addView()
addView实例化1个ViewRootImpl
用getChildMeasureSpec()得到子view的MeasureSpec并传给子view的measure()
会调用 performResumeActivity(),让Activity执行onResume()生命周期
进入view的绘制流程
view绘制前的工作流程
ViewRootImpl.setView()
测量每个子view的宽高,分别取其中的最大值
ViewGroup.measureChildWithMargins()
View.resolveSizeAndState
View.onMeasure()
performTraversals
ViewRootImpl.doTraversal()
FrameLayout.onMeasure()
请求布局
WindowManagerImpl.addView()
ActivityThread.handlerResumeActivity()
ViewRootImpl.preformTraversals()
ViewRootImpl.scheduleTraversals()
DecorView的子view中的宽高最大值和当前的DecorView大小(包含边距)中取较小值,也就是说最大也不超过屏幕大小
DecorView.onMeasure()
将DecorView对象设置给ViewRootImpl
开始测量DecorView
View.setMeasureDimesion()
宽高不是exactly的都重新设置成exactly
View.measure()
ViewRootImpl.requestLayout()
子view宽高取默认最小值,或者取传来的specSize
mContentParent
mWidth和mHeight当前视图frame窗口大小lp是WindowManager.LayoutParams
View.getDefaultSize()
0 条评论
回复 删除
下一页