Android 高階之 View 的繪製 三

2021-10-01 23:54:02 字數 2068 閱讀 7025

/**

* 原始碼分析:layout()

* 作用:確定view本身的位置,即設定view本身的四個頂點位置

*/public

void

layout

(int l,

int t,

int r,

int b)

/** * 分析1:setframe()

* 作用:根據傳入的4個位置值,設定view本身的四個頂點位置

* 即:最終確定view本身的位置

*/protected

boolean

setframe

(int left,

int top,

int right,

int bottom)

/** * 分析2:setopticalframe()

* 作用:根據傳入的4個位置值,設定view本身的四個頂點位置

* 即:最終確定view本身的位置

*/private

boolean

setopticalframe

(int left,

int top,

int right,

int bottom)

// 回到呼叫原處

/** * 分析3:onlayout()

* 注:對於單一view的laytou過程

* a. 由於單一view是沒有子view的,故onlayout()是乙個空實現

* b. 由於在layout()中已經對自身view進行了位置計算,所以單一view的layout過程在layout()後就已完成了

*/protected

void

onlayout

(boolean changed,

int left,

int top,

int right,

int bottom)

/**

* 原始碼分析:layout()

* 作用:確定view本身的位置,即設定view本身的四個頂點位置

* 注:與單一view的layout()原始碼一致

*/public

void

layout

(int l,

int t,

int r,

int b)

/** * 分析1:setframe()

* 作用:確定view本身的位置,即設定view本身的四個頂點位置

*/protected

boolean

setframe

(int left,

int top,

int right,

int bottom)

/** * 分析2:setopticalframe()

* 作用:確定view本身的位置,即設定view本身的四個頂點位置

*/private

boolean

setopticalframe

(int left,

int top,

int right,

int bottom)

// 回到呼叫原處

/** * 分析3:onlayout()

* 作用:計算該viewgroup包含所有的子view在父容器的位置()

* 注:

* a. 定義為抽象方法,需重寫,因:子view的確定位置與具體布局有關,所以onlayout()在viewgroup沒有實現

* b. 在自定義viewgroup時必須複寫onlayout()!!!!!

* c. 複寫原理:遍歷子view 、計算當前子view的四個位置值 & 確定自身子view的位置(呼叫子view layout())

*/protected

void

onlayout

(boolean changed,

int left,

int top,

int right,

int bottom)

}}

Android之View的事件體系

velocitytracker,gesturedetector,scroller 1.velocitytracker 速度追蹤 在ontouch中新增 override public boolean ontouch view v,motionevent event 不過回頭一看,發現書中是放在ont...

android之View和ViewGroup介紹

activity中包含views和viewgroups 檢視組 android 中的view與我們以前理解的 檢視 不同。在android中,view比檢視具有更廣的含義,它包含了使用者互動和顯示,更像windows操作 系統中的window。viewgroup是view的子類,所以它也具有view...

android之View的啟動過程

程式裡呼叫了onsizechanged方法進行了一些設定,不知道onsizechanged是在什麼時候啟動的,所以研究了一下view的啟動流程 如下 public class testview extends view public testview context context,attribut...