Android對onTouch觸控事件的處理

2021-06-27 04:13:34 字數 1681 閱讀 1087

在android對ontouch主要呼叫三個方法對觸控傳遞:

1、public boolean dispatchtouchevent(motionevent ev)      //在觸控時,android首先呼叫的是這個方法,其分配何時呼叫onintercepttounch和ontouchevent,單純的返回true和false是不行的,不會呼叫者2個方法。當必須重寫這方法,又要呼叫其他2個觸控方法是,必須return super.dispatchtouchevent(ev)。

2、public boolean onintercepttouchevent(motionevent ev)    // 這個方法主要用於父類對觸控事件的攔截處理,看是否需要傳遞給子類,返回false表示事件沒處理完,子類就可以接收到觸控事件了,所以這個類只有那種有可以有子控制項的viewgrop才有的,像linearlayout就有,button和textview沒有這個方法。

3、public boolean ontouchevent(motionevent ev)     //處理事件

我寫了個demo對觸控事件的研究,xml布局如下:

然後對於父控制項mylinear中重寫了上面三個方法,對於不同的返回值也有備註,**如下:

@override

public boolean ontouchevent(motionevent event)

@override

public boolean onintercepttouchevent(motionevent ev)

@override

public boolean dispatchtouchevent(motionevent ev)

在子控制項mybutton中重寫了ontounchevent方法:

@override

public boolean ontouchevent(motionevent event)

return super.ontouchevent(event);

}其實關於android的ontouch觸控事件,在上面**中的注釋都寫明白了。下面我們可以用文字總結下。

當我們觸控按下的時候。

1、首先執行父控制項的dispatchtouchevent------->父控制項的onintercepttouchevent,if父控制項返回true,觸控事件不會傳遞給子view,直接呼叫父控制項的ontouchevent。

2、首先執行父控制項的dispatchtouchevent------->父控制項的onintercepttouchevent,if父控制項返回false------>傳遞給子view的ontouchevent,if子view返回false.

------->事件傳遞給父控制項的ontouchevent,子控制項的ontouchevent觸控事件消失,後續的move和up不會再執行了

3、首先執行父控制項的dispatchtouchevent------->父控制項的onintercepttouchevent,if父控制項返回false------>傳遞給子view的ontouchevent,if子view返回true.

------->事件不會傳遞給父控制項的ontouchevent,子控制項的ontouchevent觸控事件還保留了,當move或者up的時候,觸控流程事件如第二條前面的部分,先執行父控制項的

dispatchtouchevent和onintercepttouchevent,然後根據情況再執行子控制項的move或者up事件。

onTouch和onTouchEvent的區別

1.ontouch方法 ontouch方法是view的 ontouchlistener藉口中定義的方法。當乙個view繫結了ontouchlister後,當有touch事件觸發時,就會呼叫ontouch方法。當把手放到view上後,ontouch方法被一遍一遍地被呼叫 2.ontouchevent方...

onTouch事件分發

事件機制 我們知道view中有ontouch,onclick,1.並且ontouch優先於onclick執行,2.ontouch有返回值,為true時onclick並不再執行了 因為一切view都extend於view dispatchtoucheevent 還是viewgroup oninterc...

OnTouch與OnTouchEvent的區別

ontouch是view中ontouchlistener介面的乙個方法 ontouchevent是activity,view,viewgroup中的方法 在處理事件時,activity,view,viewgroup分別在ontouchevent中處理事件,只有view及其子類可以註冊事件處理程式,當...