最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ā)升職加的評論 (共 條)

分享到微博請遵守國家法律
巫山县| 梅河口市| 阳江市| 通渭县| 安化县| 邯郸市| 彭阳县| 白山市| 安乡县| 天柱县| 和顺县| 安化县| 柘荣县| 河源市| 井冈山市| 昌宁县| 富川| 明溪县| 方山县| 杭锦后旗| 政和县| 明光市| 信丰县| 沙湾县| 泰顺县| 云霄县| 淮安市| 扎兰屯市| 泸水县| 崇仁县| 聂拉木县| 宽甸| 福泉市| 永丰县| 健康| 泾源县| 丹阳市| 湘西| 泽州县| 开远市| 上高县|