91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android DecorView淺析

發布時間:2020-07-13 14:21:00 來源:網絡 閱讀:459 作者:zhukev 欄目:移動開發

不知道原出處,所以只能表明轉載處了:http://blog.csdn.net/sunny2come/article/details/8899138,順便增加了個RobotiumViewer的截圖以方便理解。

摘要 一、DecorView為整個Window界面的最頂層View。 二、DecorView只有一個子元素為LinearLayout。代表整個Window界面,包含通知欄,標題欄,內容顯示欄三塊區域。 三、LinearLayout里有兩個FrameLayout子元素。 (20)為標題欄顯示界面。只有一個TextView顯示應用

Android DecorView淺析

Android DecorView淺析

(請發郵件到 freeget.one@gmail.com  獲得最新翻強軟件。)

一、DecorView為整個Window界面的最頂層View。

二、DecorView只有一個子元素為LinearLayout。代表整個Window界面,包含通知欄,標題欄,內容顯示欄三塊區域。

三、LinearLayout里有兩個FrameLayout子元素。

  (20)為標題欄顯示界面。只有一個TextView顯示應用的名稱。也可以自定義標題欄,載入后的自定義標題欄View將加入FrameLayout中。

  (21)為內容欄顯示界面。就是setContentView()方法載入的布局界面,加入其中。

工具查看:

1.

下圖為SDK中tools文件夾下hierarchyviewer bat 查看ViewTree的結果:

(此時未替換標題欄)

Android DecorView淺析

 

2.替換標題欄后ViewTree的變化:

Android DecorView淺析

綠色區域發生了變化,改變為了載入的title.xml文件的布局。

title.xml內容為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ImageView
    android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/icon2"/>
  <TextView
      android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/title_tv"
  android:textColor="#FFFFFF"
  android:textStyle="bold"
  android:text="@string/app_name"
  />
</LinearLayout>


 

通知欄繪制在1號LinearLayout中,還是繪制在DecorView中還有待探究。

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

ApiDemo中app包下CustomTitle中自定義TitleBar代碼段

1
2
3
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.custom_title);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);


 

載入自定義titleBar后如何查找其中元素呢,其實還是findViewById就可以了,因為載入的自定義布局已經在DecorView樹中了

而findViewById是怎么回事呢。

activity中findViewById源碼

1
2
3
public View findViewById(int id) {
    returngetWindow().findViewById(id);
}


調用了getWindow().findViewById,getWindow返回的是Window點入查看window中源碼

1
2
3
public View findViewById(int id) {
    returngetDecorView().findViewById(id);
}


所以最終是從DecorView最頂層開始搜索的


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂溪县| 宜宾县| 从江县| 吉木乃县| 阳高县| 且末县| 湛江市| 东海县| 扬州市| 日喀则市| 绥芬河市| 河北区| 汤阴县| 澄江县| 奈曼旗| 北流市| 阿拉尔市| 怀远县| 皋兰县| 开封市| 华坪县| 乌鲁木齐县| 桃源县| 湄潭县| 德昌县| 盈江县| 远安县| 慈利县| 海伦市| 呼伦贝尔市| 石狮市| 天镇县| 甘德县| 沂水县| 公主岭市| 城步| 永泰县| 喀喇| 双鸭山市| 灵台县| 江源县|