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

    引用地址:

  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469781.html
Copyright © 2011-2022 走看看