自定義View(三) 事件攔截總結

2021-09-10 07:45:57 字數 615 閱讀 7236

1.事件攔截主要通過三個方法控制:

public boolean dispatchtouchevent(motionevent ev);

public boolean onintercepttouchevent(motionevent ev);//只有viewgroup才會呼叫

public boolean ontouchevent(motionevent event) ;

2.dispatchtouchevent返回true,則它本身消費,返回false,則由它的父類消費

3.在viewgroup中,onintercepttouchevent返回true,則呼叫其本身的ontouchevent,返回false,則事件繼續分發

4.如ontouch方法返回true,則不呼叫ontouchevent

5.從down到無數move再到up組合成乙個事件序列,正常情況下乙個view一旦攔截,則接下的事件都由它來處理

6.某個view如果不處理action_down事件,那麼同一事件的其它事件序列不會交給它處理,事件交給父類做

7.某個view如果不消耗除action_down的事件,那麼這個事件會消失,不會傳給父類去做,最終這些消失的事件傳遞給

activity處理

自定義View的總結

總結來自官方文件 首先android裡邊的檢視是以樹形結構組織起來的。檢視樹的繪製是從檢視的根節點開始的。這就要求去測量和繪製這個檢視樹時遍歷檢視樹上的每乙個view。每乙個viewgroup也相當於乙個樹,他也有責任保證他的每乙個子view的draw方法會被呼叫。同樣的每乙個子view也有責任繪製...

自定義View總結筆記

例項 1 中直接new出來的 public cakeview context context 布局中引用 public cakeview context context,nullable attributeset attrs 布局中應用,並且帶style 不常用 public cakeview co...

android自定義view(三)

自定義view第三種是 完全自定義 效果如下 需要解決的問題 1 view的測量 onmeasure 2 view的繪製ondraw 3 如果需要變換圖形,需要使用invalid更新,可以實現動態的效果 public class myview extends view public myview c...