国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

activity,window,view

2019-11-08 00:24:54
字體:
來源:轉載
供稿:網友

setContentView整個過程主要是如何把Activity的布局文件或者java的View添加至窗口里,重點概括為:

創建一個DecorView的對象mDecor,該mDecor對象將作為整個應用窗口的根視圖。

依據Feature等style theme創建不同的窗口修飾布局文件,并且通過findViewById獲取Activity布局文件該存放的地方(窗口修飾布局文件中id為content的FrameLayout)。

將Activity的布局文件添加至id為content的FrameLayout內。

當setContentView設置顯示OK以后會回調Activity的onContentChanged方法。Activity的各種View的findViewById()方法等都可以放到該方法中,系統會幫忙回調。

LayoutInflater的使用中重點關注inflate方法的參數含義:

inflate(xmlId, null); 只創建temp的View,然后直接返回temp。

inflate(xmlId, parent); 創建temp的View,然后執行root.addView(temp, params);最后返回root。

inflate(xmlId, parent, false); 創建temp的View,然后執行temp.setLayoutParams(params);然后再返回temp。

inflate(xmlId, parent, true); 創建temp的View,然后執行root.addView(temp, params);最后返回root。

inflate(xmlId, null, false); 只創建temp的View,然后直接返回temp。

inflate(xmlId, null, true); 只創建temp的View,然后直接返回temp。

1,如何理解Activity,View,Window三者之間的關系?

這個問題真的很不好回答。所以這里先來個算是比較恰當的比喻來形容下它們的關系吧。Activity像一個工匠(控制單元),Window像窗戶(承載模型),View像窗花(顯示視圖)LayoutInflater像剪刀,Xml配置像窗花圖紙。

1:Activity構造的時候會初始化一個Window,準確的說是PhoneWindow。

2:這個PhoneWindow有一個“ViewRoot”,這個“ViewRoot”是一個View或者說ViewGroup,是最初始的根視圖。

3:“ViewRoot”通過addView方法來一個個的添加View。比如TextView,Button等

4:這些View的事件監聽,是由WindowManagerService來接受消息,并且回調Activity函數。比如onClickListener,onKeyDown等。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雅安市| 镶黄旗| 赤壁市| 江永县| 长泰县| 海盐县| 寻乌县| 积石山| 四会市| 子洲县| 张家口市| 天祝| 炎陵县| 东方市| 阿坝县| 巫山县| 盐池县| 巨鹿县| 金塔县| 凭祥市| 隆子县| 林甸县| 祁连县| 什邡市| 正定县| 福建省| 伊宁市| 哈尔滨市| 青岛市| 冷水江市| 永善县| 湟源县| 泽普县| 梅州市| 阿荣旗| 皋兰县| 如东县| 彭阳县| 阳城县| 怀柔区| 汝阳县|