一直想找时间把view事件分发这块搞清楚,最近认真研究了这块后,把自己理解的记录一下
正常情况下一次完整的触摸事件,应该是一个DOWN,多个MOVE,和一个UP组成。
View事件相关一般就这三个地方了,一个dispatchTouchEvent,一个setOnTouchListener,一个onTouchEvent。首先我们先自定义一个View继承Button(默认可以点击的view,为什么button默认可点击呢)
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e(EventActivity.TAG, "dispatchTouchEvent_ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.e(EventActivity.TAG, "dispatchTouchEvent_ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:
Log.e(EventActivity.TAG, "dispatchTouchEvent_ACTION_UP");
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e(EventActivity.TAG, "onTouchEvent_ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE: