zoukankan      html  css  js  c++  java
  • Android DecorView浅析

    一、DecorView为整个Window界面的最顶层View。

    二、DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。

    三、LinearLayout里有两个FrameLayout子元素。

      (20)为标题栏显示界面。只有一个TextView显示应用的名称。也可以自定义标题栏,载入后的自定义标题栏View将加入FrameLayout中。

      (21)为内容栏显示界面。就是setContentView()方法载入的布局界面,加入其中。

    工具查看:

    1.

    下图为SDK中tools文件夹下hierarchyviewer bat 查看ViewTree的结果:

    (此时未替换标题栏)

    2.替换标题栏后ViewTree的变化:

    绿色区域发生了变化,改变为了载入的title.xml文件的布局。

    title.xml内容为:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    de ><?xml version=de>de >"1.0"de> de >encoding=de>de >"utf-8"de>de >?>de>

    de ><LinearLayoutde>

    de >  de>de >xmlns:android=de>de >"http://schemas.android.com/apk/res/android"de>

    de >  de>de >android:layout_width=de>de >"fill_parent"de>

    de >  de>de >android:layout_height=de>de >"fill_parent"de>de >>de>

    de >  de>de ><ImageViewde>

    de >    de>de >android:layout_width=de>de >"wrap_content"de>

    de >  de>de >android:layout_height=de>de >"wrap_content"de>

    de >  de>de >android:src=de>de >"@drawable/icon2"de>de >/>de>

    de >  de>de ><TextViewde>

    de >      de>de >android:layout_width=de>de >"wrap_content"de>

    de >  de>de >android:layout_height=de>de >"wrap_content"de>

    de >  de>de >android:id=de>de >"@+id/title_tv"de>

    de >  de>de >android:textColor=de>de >"#FFFFFF"de>

    de >  de>de >android:textStyle=de>de >"bold"de>

    de >  de>de >android:text=de>de >"@string/app_name"de>

    de >  de>de >/>de>

    de ></LinearLayout>de>

    通知栏绘制在1号LinearLayout中,还是绘制在DecorView中还有待探究。

    -----------------

    ApiDemo中app包下CustomTitle中自定义TitleBar代码段

    1

    2

    3

    de >requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);de>

    de >setContentView(R.layout.custom_title);de>

    de >getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);de>

    载入自定义titleBar后如何查找其中元素呢,其实还是findViewById就可以了,因为载入的自定义布局已经在DecorView树中了

    而findViewById是怎么回事呢。

    activity中findViewById源码

    1

    2

    .relpost{clear:both}

    Tag:

    Freenovo 发表于2014-04-23 20:24:00 | 编辑 | 分享 0

    引用地址:

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469781.html
Copyright © 2011-2022 走看看