Android view事件分發總結

2021-07-22 17:42:36 字數 872 閱讀 3967

事件分發的關係偽**:

public boolean dispatchtouchevent(motionevent ev)else

return consume;

}

1、一般情況是不對dispatchtouchevent()進行改寫的,通常是改寫onintercepttouchevent、ontouchevent以到達攔截事件的目的,當乙個控制項對某個事件攔截成功了,那麼接下來同一系列的事件都將會有該控制項來處理,此後onintercepttouchevent就不會被呼叫了

是否將事件交個某個控制項處理,關鍵就是看actiondown了,如果截獲了actiondown,那麼接下來的事件都會由該控制項處理,否則將交由其他控制項處理。

2、關於ontouch()、ontouchevent()、onclick()的優先順序問題(ontouch()在ontouchelistener()中設定,onclick()在onclicklistenter()中設定)

ontouch>ontouchevent>onclick

只有當ontouch反會false時,ontouchevent才會被呼叫,只有當ontouchevent返回false時,onclick才會被呼叫。

3、事件的傳遞順序:activity->window->view

4、viewgroup預設不攔截任何事件,即onintercepttouchevent()方法返回false。view沒有onintercepttouchevent()方法,直接掉用ontouchevent()方法,預設是會對事件進行消耗的,即返回true。

5、view的enable屬性不會對ontouchevent()的返回值產生影響,但clickable、longclickable屬性會。

Android view點選事件

import android.os.bundle import android.view.keyevent import android.view.motionevent import android.view.view import android.view.view.onclicklistene...

事件分發機制

android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件 action down action move action move action move.action move acti...

Android Touch事件分發

事件 viewgroup view有子元素 view無子元素 activity 方法功能 public boolean dispatchtouchevent motionevent ev yy ny分發 public boolean onintercepttouchevent motionevent...