view 绘制流程
2023-12-28 19:32:34 0 举报
View 绘制流程是Android框架中一个非常重要的部分,它涉及到了用户界面的生成和渲染。以下是一个简单的View绘制流程描述: 1. 开始:当应用需要显示一个界面时,系统会调用Activity的onCreate()方法,在此方法中需要创建或获取一个Layout,Layout中包含了View。 2. 测量(Measure):在这一步中,View会根据自身的属性和父View的约束来决定自己的大小。这个过程是通过View的measure()方法来完成的。 3. 布局(Layout):这一步View会根据自己的大小和位置信息来更新布局。这个过程是通过View的layout()方法来完成的。 4. 绘制(Draw):在这一步中,View会根据自身的属性和样式来绘制自身。这个过程是通过View的draw()方法来完成的。 以上就是一个简单的View绘制流程描述,实际上还有更多细节和优化策略。
作者其他创作
大纲/内容
WindowManagerGlobal.initialize()
onStart
WindowManger其实现类是WindowManagerImpl,该类内部包含了WMG对象,后续方法都通过WMG来调用WMS的方法
PhoneWindow
decor.setVisibility(View.INVISIBLE);
root.setView()
performStart
scheduleTraversals()
WMG 中获取到WMS服务
解析主题Theme中对window的一些配置,决定DecorView用哪个布局的layout
WindowSession进程中会调用WMS服务的addWindow
handleLaunchActivity
mWindow.setWindowManager
window和WindowManagerImpl绑定
view.addView方法
windowManager.addView
onCreate
performTraversals()
解析布局其他相关的颜色,风格等
activity.makeVisible()
转为viewGroup保存到类中,变量名:contentParent
mWindow和WMS进行关联
通过传入的DecorView生成ViewRootImpl对象root
通过LayoutInflater解析activity布局,并将生成的view加入到contentParent中
ViewRootImpl
系统针对不同主题Theme的activity,有不同风格的DecorView的layout 布局
performResume
系统服务进程
activity.attach
addView
viewRootImpl后续会代理DecorView处理所有关于activity的view的操作
onResume
DecorView解析布局
解析布局生成VIewGroup对象mContentRoot
通过mWindow生成DecorView
// IWindowSession mWindowSessionmWindowSession.addToDisplay(window)
mTraversalRunnable
为当前的actiivty创建PhoneWindow对象mWindow
和SurfaceFlinger 交互,显示界面
performCreate
DecorView
ActivityThread
WindowManagerGlobal
mDecor.setVisibility(View.VISIBLE);
requestLayout()
Activity
doTraversal()
setContentView
从DecorView中找出activity界面容器ID_ANDROID_CONTENT
attach()
0 条评论
下一页