本博客同步发布于XueLong的博客
在使用OnTouchListener()
方法时,发现竟然只能监听到MotionEvent.ACTION_DOWN
操作,而无法监听到其他的操作,如:MotionEvent.ACTION_UP
、MotionEvent.ACTION_MOVE
等,都监测不到。代码如下:
linearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action){
case MotionEvent.ACTION_DOWN:
Log.e(TAG, "onTouch: down");
break;
case MotionEvent.ACTION_UP:
Log.e(TAG, "onTouch: up");
break;
case MotionEvent.ACTION_MOVE:
Log.e(TAG, "onTouch: move");
break;
}
return ActionUpActivity.super.onTouchEvent(event);
}
});
Log输出如下:
E/ActionUpActivity: onTouch: down
E/ActionUpActivity: onTouch: down
E/ActionUpActivity: onTouch: down
感觉这样写没有问题啊,但是为什么就是只能监听到MotionEvent.ACTION_DOWN
呢?
In onTouchEvent, ACTION_UP doesn't work
原来是return ActionUpActivity.super.onTouchEvent(event);
实际上返回的时false
,而这里如果返回false
的话,Android
系统将不会在通知该手势中的其他任何事件;如果想继续捕捉到其他手势事件,则这里就要返回一个true
。
正确写法如下:
linearLayout.setOnTouchListener(new View.OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action){
case MotionEvent.ACTION_DOWN:
Log.e(TAG, "onTouch: down");
startX = (int) event.getRawX();
startY = (int) event.getRawY();
Log.e(TAG,"startX: "+startX + " startY: " + startY);
break;
case MotionEvent.ACTION_UP:
Log.e(TAG, "onTouch: up");
startX = (int) event.getRawX();
startY = (int) event.getRawY();
Log.e(TAG,"startX: "+startX + " startY: " + startY);
break;
case MotionEvent.ACTION_MOVE:
Log.e(TAG, "onTouch: move");
int newX = (int) event.getRawX();
int newY = (int) event.getRawY();
int dx = newX - startX;
int dy = newY - startY;
Log.e(TAG,"移动的dx: "+dx + " 移动的dy: " + dy);
//重新初始化手指的位置
startX = (int) event.getRawX();
startY = (int) event.getRawY();
break;
}
// TODO: 2017/10/30 如果这里为false,则只能监听到ACTION_DOWN,其他的都监听不到
return true;
// return ActionUpActivity.super.onTouchEvent(event);
}
});
写在最后
以上就是关于,Android onTouchEvent
的MotionEvent.ACTION_UP
不响应的问题的解决方式。
如果你在参考过程中遇到问题,可以在我的联系方式中给我提问。
后面会继续介绍,Android
的相关知识,欢迎继续关注我博客的更新。
参考资源
转载请注明:XueLong的博客 » Android自定义图形-Shape的使用
网友评论