五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

UI不好,工作難保!自定義View是Android程序員的分水嶺?安卓開發(fā)升職加

2022-05-18 10:08 作者:房頂上的鋁皮水塔  | 我要投稿

ViewGroup的【生命周期流程】:



Q:為什么有些方法會被調(diào)用多次?

A:我個人理解因為對于一個ViewGroup進行measure的時候,一個View的大小依賴于measure子View和父View的measureSpec,所以一個View的onLayout onMeasure方法會被調(diào)用多次。

課程1自定義FlowLayout:

自定義FlowLayout其實就是自定義一個ViewGroup,我們關(guān)注的點主要在onMeasure和onLayout:



onMeasure部分

  1. 測量的關(guān)系,ViewGroup在進行measure時,需根據(jù)子View的大小調(diào)整自身。
  2. 在ViewGroup中onMeasure時,不能直接將從上面?zhèn)飨碌膍easureSpec傳給子View。
  3. onMeasure的過程:
  4. 度量孩子 -> for 孩子的height width,通過getChildMeasureSpec方法設(shè)置正確的measurespec,然后重新measure
  5. 度量自己 -> setMeasureDimension(),和自身的功能相關(guān),并且最后需要根據(jù)MeasureSpec調(diào)整

onLayout部分

坐標系

onLayout的四個參數(shù),都是參考ViewGroup(圖二)


4. 在后續(xù)的layout measure過程中可能會改變的變量需要注意避免在構(gòu)造函數(shù)中初始化,因為構(gòu)造函數(shù)只會調(diào)用一次,measure layout會調(diào)用多次。

5 . measure過程還是需要注意使用getChildMeasureSpec,同時注意view inflate的問題:

LayoutInflater.inflate(res, parent, false),如果不是這樣會導(dǎo)致,根View(temp)無法執(zhí)行setLayoutParams,這樣child.getLayoutParams也會出問題。


面試問題總結(jié):

Q1:MeasureSpec和LayoutParams之間有關(guān)聯(lián)嗎?為什么有了LayoutParams還需要MeasureSpec?

View在xml中通過使用android:layout_width等方式告訴父容器布局方式(其實是LayoutParams的xml屬性),LayoutParams+父布局決定了MeasureSpec。

Q2:如何將xml中的定義轉(zhuǎn)變成MeasureSpec?

使用getChildMeasureSpec,getChildMeasureSpec在任主席的《安卓開發(fā)藝術(shù)探索》中有總結(jié)。其中第二個參數(shù)padding來自parent ,第一個參數(shù)是父親的MeasureSpec,最后一個是子需要的大小。



Q3:為什么需要measure

























UI不好,工作難保!自定義View是Android程序員的分水嶺?安卓開發(fā)升職加的評論 (共 條)

分享到微博請遵守國家法律
阳山县| 黄浦区| 贵定县| 会宁县| 环江| 花垣县| 呼伦贝尔市| 凉城县| 电白县| 洛川县| 格尔木市| 沿河| 富宁县| 富锦市| 遵化市| 益阳市| 卢龙县| 明水县| 绥德县| 会泽县| 西安市| 金秀| 南召县| 武夷山市| 徐州市| 五莲县| 井陉县| 岳池县| 休宁县| 阿巴嘎旗| 临沧市| 黑山县| 年辖:市辖区| 深州市| 始兴县| 阜城县| 东明县| 聂拉木县| 太仓市| 鄂尔多斯市| 云霄县|