Android view架構
view測量與繪製
view的測量
MeasureSpec:
定義:由SpecMode(int)於SpecSize(int)打包成一個int值(避免過多的物件記憶體分配)。它是一個32位(4位元組)的int值,高2位是specMode(測量模式),低30位是 specSize(測量的大小)。
功能:很大程度決定一個view的尺寸規格。
SpecMode:
定義:測量模式(分三種)
1.EXACTLY:layout_width或者layout_height為具體數值或者match_parent時,使用這種模式,此時的view為SpecSize所指定的大小。
2.AT_MOST:layout_width或者layout_height為wrap_content時,父容器給出了測量大小SpecSize,但是具體大小還是要根據子控制元件內容來調控(只要不超過父控制元件測量的最大尺寸即可)。
3.UNSPECIFIED:
父容器不指定大小,一般用於系統內部的測量。
onMeasure:
重寫onMeasure( )方法需要呼叫setMeasureDimension最終將測量後的值設定上。
ViewGroup的測量
通常需要重寫onLayout方法確認位置,一般不需要繪製(onDraw),但是會呼叫dispatchDraw()來繪製其子view。
注:無論是測量還是佈局位置,還是繪製,viewGroup都是遍歷子view,獲取每一個子view的資料(onMeasure和onLayout)或呼叫子view的方法(onDraw)。
View的繪製
onDraw:
1.canvas:
裝載畫布:Canvas canvas = new Canvas(bitmap);
canvas與bitmap有關聯繪製操作都是作用在這個bitmap上的。
2.自定義控制元件:
View中重要的回撥方法:
onFinishInflate():從XML載入元件後呼叫。
onSizeChanged():元件大小變化時回撥。
onMeasure():需要測量view大小時回撥。
onLayout():確定顯示位置時回撥。
onTouchEvent():監聽觸控時間回撥。
三種自定義控制元件的方法
1.對現有控制元件進行擴充
2.通過組合的方式實現新的控制元件
3.重寫view來實現全新的控制元件
事件攔截機制:
ViewGroup:dispatchtouchEvent —> onInterceptTouchEvent —>onTouchEvent
view: dispatchtouchEvent —>onTouchEvent
注:這三個方法的返回值: true-不傳遞 false-傳遞
相關文章
- Android 架構設計 --- 關於 View 邊界劃分的思考Android架構View
- Android開發指南!帶你全面解析Android框架體系架構view篇,已拿offerAndroid框架架構View
- Android架構合集Android架構
- Android MVP 架構AndroidMVP架構
- Android系統架構-----Android的系統體系架構Android架構
- Facebook移動架構:Android Flux架構詳解架構AndroidUX
- Android-MVP架構AndroidMVP架構
- Android Flux架構初探AndroidUX架構
- Android 知識架構Android架構
- Android 圖形架構Android架構
- Android應用架構Android應用架構
- Android 架構演化之路Android架構
- Android架構系列-MVP架構的實際應用Android架構MVP
- Android ViewAndroidView
- Android自定義View:View(二)AndroidView
- Android專案架構搭建Android架構
- Android 什麼是架構?Android架構
- Android 元件化架構概要Android元件化架構
- 架構雜談(Android、Web)架構AndroidWeb
- Android系統架構圖Android架構
- Android的系統架構Android架構
- Android 專案最新架構Android架構
- Android-系統架構Android架構
- 我眼中的Android架構Android架構
- 我的Android重構之旅:架構篇Android架構
- Android 專案重構之路:架構篇Android架構
- Android View 系統 1 - View樹AndroidView
- Android架構系列-基於MVP建立適合自己的架構Android架構MVP
- android view 分析AndroidView
- [Android]AAB外掛化架構Android架構
- Android 圖形架構簡介Android架構
- Android MVVM元件化架構方案AndroidMVVM元件化架構
- Android 檢視架構詳解Android架構
- 《Android元件化架構》上市了Android元件化架構
- Android新元件架構——LifecylceAndroid元件架構
- Android架構元件WorkManager詳解Android架構元件
- Android架構元件Room的使用Android架構元件OOM
- Android簡潔架構設計Android架構