贴上一些code:
@Override
public boolean onTouchEvent(MotionEvent event) {
int evt = event.getAction();
switch(evt) {
case MotionEvent.ACTION_DOWN:System.out.println("MotionEvent.ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:System.out.println("MotionEvent.ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:System.out.println("MotionEvent.ACTION_UP");
break;
} this.postInvalidate();
return super.onTouchEvent(event);
}
为何指针点了之后屏幕上只有“MotionEvent.ACTION_DOWN”输出而“MotionEvent.ACTION_UP”却没有输出?MotionEvent.ACTION_MOVE是在什么事件下响应?是拖拽事件下响应吗?
@Override
public boolean onTouchEvent(MotionEvent event) {
int evt = event.getAction();
switch(evt) {
case MotionEvent.ACTION_DOWN:System.out.println("MotionEvent.ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:System.out.println("MotionEvent.ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:System.out.println("MotionEvent.ACTION_UP");
break;
} this.postInvalidate();
return super.onTouchEvent(event);
}
为何指针点了之后屏幕上只有“MotionEvent.ACTION_DOWN”输出而“MotionEvent.ACTION_UP”却没有输出?MotionEvent.ACTION_MOVE是在什么事件下响应?是拖拽事件下响应吗?
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("", " i am down");
break;
case MotionEvent.ACTION_UP:
Log.d("", " i am up");
break;
case MotionEvent.ACTION_MOVE:
Log.d("", " i am move");
break;
} return super.onTouchEvent(event);
}我试了下,是没有问题的,能打出来所有的log,楼主看看你你其他的地方是不是覅有问题……
这三个事件标识出了最基本的用户触摸屏幕的操作,含义也很清楚。虽然大家天天都在用它们,但是有一点请留意。ACTION_DOWN事件作为起始事件,它的重要性是要超过ACTION_MOVE和ACTION_UP的,如果发生了ACTION_MOVE或者ACTION_UP,那么一定曾经发生了ACTION_DOWN
super.onTouchEvent(event)和 true的区别在哪?为什么会造成这种情况?
这个可能要看具体的程序环境