View 自定义 - Activity、Window、DecorView、ViewRoot

一、概念 

定义作用具体描述
Activity控制器

控制生命周期、处理事件

        管理视图的添加与显示(内部持有一个Window),通过回调与 Window 及 View 进行交互。

        不负责视图控制,真正控制视图的是 Window,它真正代表一个窗口,一个Activity包含一个 Window。

Window承载器承载视图的显示

        Window是一个抽象类,Activity实际持有的是其子类 PhoneWindow,PhoneWindow有一个内部类DecorView。

        通过 WindowManager 创建 DecorView  来加载 Activity 的布局,并将它交给 ViewRoot 进行视图绘制和其它交互。 

DecorView顶级ViewGroup视图树的根节点

        是 FrameLayout 的子类。内部包含一个垂直方向的 LinearLayout,上为标题栏 titlebar、下为内容栏 content。Activity通过 setContent() 设置的布局文件就是被加到内容栏中。

得到content:

ViewGroup content = (ViewGroup)findViewById(android.R.id.content);

得到设置的View:

ViewGroup rootView = (ViewGroup) content.getChildAt(0);

ViewRoot连接器链接 WindowManager 和 DecorView、完成View的绘制流程

链接作用:与 WMS 通讯,调整窗口大小及布局。

绘制流程:measure、layout、draw。

在主线程 Activity 对象被创建后,自动将 DecorView 添加到 Window 中并创建 ViewRootImpl 对象:

root = new ViewRootImpl(view.getContent(),display);

root.setView(view,wparams,panelParentView)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值