了解Android View的绘制流程及UI界面架构

  • 前言

   谈到UI界面架构,我其实想到的就是一个Activity,然后再到布局,比如常用的LinearLayout(线性布局)、RelativeLayout(相对布局)等,再具体到每一个View构成一个界面。这样显得很不专业,哈哈。

 

  • 正文

                             UI界面架构图

   PhoneWindow是安卓系统中最基本的窗口系统,每个Activity都会创建一个PhoneWindow,它是activity和view之间交互的接口,其中DecorView被设置为整个应用窗口的根View,DecorView作为窗口界面的顶层视图,封装了一些窗口操作的基本方法。将要显示的具体内容呈现在PhoneWindow上,我们的View的监听事件都是由WindowMangerService来进行接收,并且通过Activity的对象来回调相应的onClickListener。

  • 绘制流程

      启动一个程序先运行主Activity,Android系统会根据activity的布局来对它进行绘制。绘制从根视图ViewRoot的performTraversals()方法开始,从上到下遍历整个视图树,每个View负责控制自己,而ViewGroup还要负责通知自己的子View进行绘制。

         视图操作过程分为三个步骤,测量measure,布局layout,绘制draw      

      measure用来测量View的实际大小 ,页面的测量流程从performMeasure开始,具体分发给viewgroup,由viewgroup在他的measureChild方法中传递给子View,ViewGroup通过遍历自身所有的子View,并逐个调用子View的Measure方法实现测量操作。View的Measure方法,最终的测量是通过回调onMeasure方法实现的,这个通常由View的特定子类自己实现,可以通过重写这个方法实现自定义View


     layout的过程是确定View在父容器中的布局位置,他是父容器获取子View的位置参数后,调用View的layout方法并将位置传入参数实现的。

 

     Draw操作用来实现将控件绘制出来,绘制的流程从performDraw开始,最终调用到每个View的draw方法绘制每个View。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值