初·Android View的繪製流程
我們按照這個繪製流程來學習:
- xml佈局檔案的解析
- 測量onMeasure
- 佈局onLayout(ViewGroup)
- 繪製onDraw
onMeasure 測量
父View模式 | 父View寬高 | 子View設定寬高 | 子View測量寬高 | 子View測量模式 |
---|---|---|---|---|
EXACTLY | 父View大小是確切的,例如(100,200) | 子View </br>(match_parent,match_parent) | (100,200) | EXACTLY |
EXACTLY | 父View大小是確切的,例如(100,200) | 子View(200,100) | 子View的測量大小就是(200,100),只是繪製展示後超不部分被遮擋 | EXACTLY |
EXACTLY | 父View大小是確切的,例如(100,200) | 子View</br>(wrap_content,wrap_content) | 子View大小不確定,暫定父View的大小(100,200),最大不能超過父View大小 | AT_MOST |
---- | -------------- | ------------ | ----------- | ----------- |
AT_MOST | 父View大小不確定,父View是Match或Wrap,但是其父View也給它設定了一個最大值,就是MeasureSpec 的size,大小不能超過這個最大值,父View(size,size) | 子View(match_parent,match_parent) | 子View填充父View,所以(size,size),大小不能超過size | AT_MOST |
AT_MOST | 父View大小不確定,父View是Match或Wrap,但是其父View也給它設定了一個最大值,就是MeasureSpec 的size,大小不能超過這個最大值,父View(size,size) | 子View(200,100) | 子View的測量大小就是(200,100),只是繪製展示後超不部分被遮擋 | EXACTLY |
AT_MOST | 父View大小不確定,父View是Match或Wrap,但是其父View也給它設定了一個最大值,就是MeasureSpec 的size,大小不能超過這個最大值,父View(size,size) | 子View(wrap_content,wrap_content) | 子View大小不確定,暫定父View的大小(size,size),最大不能超過父View大小 | AT_MOST |
---- | -------------- | ------------ | ----------- | ----------- |
UNSPECIFIED | 父View大小未指定,表示沒有任何束縛和約束,沒有最大值限制,可以得到任意想要的大小 | 子View(match_parent,match_parent) | 因為父View大小未指定,想要多大就多大,所以match 父View沒有任何意義 ,則寬高(0,0) | AT_MOST |
UNSPECIFIED | 父View大小未指定,表示沒有任何束縛和約束,沒有最大值限制,可以得到任意想要的大小 | 子View(200,100) | 子View的測量大小就是(200,100),只是繪製展示後超不部分被遮擋 | EXACTLY |
UNSPECIFIED | 父View大小未指定,表示沒有任何束縛和約束,沒有最大值限制,可以得到任意想要的大小 | 子View(wrap_content,wrap_content) | 子View大小不確定,暫定等於父View的大小,父View的大小沒指定,所以寬高沒意義(0,0) | AT_MOST |
相關文章
- View的繪製二:View的繪製流程View
- Android進階(五)View繪製流程AndroidView
- 探究Android View 繪製流程,Canvas 的由來AndroidViewCanvas
- Android View繪製原理:繪製流程排程、測算等AndroidView
- Android原始碼分析之View繪製流程Android原始碼View
- 探究 Android View 繪製流程,Activity 的 View 如何展示到螢幕AndroidView
- View 繪製流程分析View
- Android View繪製流程看這篇就夠了AndroidView
- Android View的繪製過程AndroidView
- View的繪製-measure流程詳解View
- Android系統原始碼分析--View繪製流程之-inflateAndroid原始碼View
- Android系統原始碼分析–View繪製流程之-setContentViewAndroid原始碼View
- Android系統原始碼分析--View繪製流程之-setContentViewAndroid原始碼View
- View繪製流程原始碼分析View原始碼
- Android高階進階之路【一】Android中View繪製流程淺析AndroidView
- Android自定義View之(一)View繪製流程詳解——向原始碼要答案AndroidView原始碼
- Android View 原始碼解析(三) – View的繪製過程AndroidView原始碼
- View繪製01-Android渲染系統中的ViewViewAndroid
- 每日一問:簡述 View 的繪製流程View
- Android View繪製原始碼分析 MeasureAndroidView原始碼
- 2018.03.15、View 繪製流程學習 筆記View筆記
- Android UI繪製流程及原理AndroidUI
- View 的繪製過程View
- 基於原始碼分析 Android View 繪製機制原始碼AndroidView
- Android自定義View之Paint繪製文字和線AndroidViewAI
- Android自定義view-自繪ViewAndroidView
- 【Android進階】RecyclerView之繪製流程(三)AndroidView
- View繪製——畫多大?View
- View繪製——畫在哪?View
- 靈魂畫師,Android繪製流程——Android高階UIAndroidUI
- 繪製流程
- View的繪製三:UI繪製的三大步驟ViewUI
- 使用joinjs繪製流程圖(五)-流程圖繪製JS流程圖
- Flutter 自定義繪製 ViewFlutterView
- View繪製——怎麼畫?View
- [Android]多層波紋擴散動畫——自定義View繪製Android動畫View
- Flutter的繪製流程簡述Flutter
- Android View的Measure測量流程全解析AndroidView
- 審批流程圖怎樣繪製?繪製流程圖方法有哪些流程圖