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...