Activity 视图

在使用 Hierarchy Viewer 后,我可以看到当前面界面的架构,而从中我发现了,我们自己写的布局其实只是整个布局的一部分,而真正的根布局是一个叫 DecorView 的家伙。

DecorView 继承自 FrameLayout,如果我们想获取到根布局 DecorView,需要调用 Activity 的 getWindow().getDecorView(),当 Activity 创建的时候会默认和一个 Window 关联,而 DecorView 其实就是 Window 的根布局。

以我在 Hierarchy Viewer 中所见到的布局结构,DecorView 下面其实有三部分,分别为:

  • LinearLayout(对应图中1)
  • 状态栏(对应图中2)
  • 底部导航栏(对应图中3)
Activity 视图_第1张图片
不好意思画的确实有些难看

如果你处于调试的模式可以获取 DecorView 后,去调用 getChildAt() 去看看这三个的顺序,下标【0】对应的 LinearLayout,下标【1】对应的 底部导航栏,下标【2】对应的状态栏,所以如果你调用了移除 View 的方法,那么最先被移除的是底部的导航栏,然后依次类推。

而我们自己布局就在 LiearLayout 下面,当然标题栏也是,通过 Hierarchy Viewer,也就能完整的看到 Activity 的视图架构,而它的功能还不止于此。

你可能感兴趣的:(Activity 视图)