五月天青色头像情侣网名,国产亚洲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ā)升職加的評論 (共 條)

分享到微博請遵守國家法律
滕州市| 额尔古纳市| 台南县| 聊城市| 交口县| 宁安市| 神木县| 江陵县| 益阳市| 德兴市| 壤塘县| 桂阳县| 增城市| 商水县| 平阴县| 万盛区| 临沭县| 木里| 博罗县| 襄城县| 凉城县| 南昌县| 芜湖县| 四会市| 延川县| 固始县| 洛川县| 勐海县| 玉屏| 正蓝旗| 咸宁市| 兴宁市| 齐齐哈尔市| 广水市| 江永县| 芦溪县| 依兰县| 合山市| 邹平县| 隆回县| 丰台区|