Android View的工作流程总结分析 (一) -performTraversals

 
Android View的工作流程

Android View的工作流程主要有三大流程:
measure 流程,测量获得View所需要的宽高
layout 流程,布局决定View在屏幕中具体的位置(决定实际的宽高)
draw 流程 绘制,真正将View的内容绘制显示到屏幕中

一.activity 界面的显示结构


DecorView是每个Activity界面的根视图,DecorView是FrameLayout的子类,是PhoneWindow对象的内部类。DecorView 对象的创建是在setContentView方法第一次执行的时候创建的,DecorView里面是一个LinearLayout布局,这个是根据我们设置的主题样式来决定加入到DecorView中是哪个layout,比如说我们设置是no-title的主题,这时候PhoneWindow生成DecorView的子View的时候就会选择一个没有title的布局R.layout.screen_simple 如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">
    <ViewStub android:id="@+id/action_mode_bar_stub"
              android:inflatedId="@+id/action_mode_bar"
              android:layout="@layout/action_mode_bar"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:theme="?attr/actionBarTheme" />
    <FrameLayout
         android:id="@android:id/content"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:foregroundInsidePadding="false"
         android:foregroundGravity="fill_horizontal|top"
         android:foreground="?android:attr/windowContentOverlay" />
</LinearLayout>
然后通过findViewById的方式,获得id为content的FrameLayout View对象,这个就是我们平常说的contentView,setContentView就是从这里来的, setContentView就是将我们平常写的View或者Xml布局加入到这个id为content的FrameLayout里面。其他的主题方式也是一样的。
这里也就说明了为什么我们requestWindowFeature方法要在setContentView 方法调用之前调用的原因

二. View工作流
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值