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

    引用地址:

  • 相关阅读:
    结合项目实例 回顾传统设计模式(五)单例模式
    CUDA并行计算框架(二)实例相关。
    结合项目实例 回顾传统设计模式(八)模板方法模式
    结合项目实例 回顾传统设计模式(三)装饰者模式
    结合项目实例 回顾传统设计模式(十一)代理模式
    趣谈.net大型电子商务 亲~ 走过路过不要错过~
    结合项目实例 回顾传统设计模式(九)迭代器模式
    DataTable的操作类
    xslt调用自定义函数(C#/Js/Java)
    优秀的前段框架Bootstrap推荐
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469781.html
Copyright © 2011-2022 走看看