Android(安卓)onTouchEvent的MotionEvent.ACTION_UP不响应
16lz
2021-01-25
本博客同步发布于 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: downE/ActionUpActivity: onTouch: downE/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
的相关知识,欢迎继续关注我博客的更新。
项目源代码
参考资源
- In onTouchEvent, ACTION_UP doesn’t work
转载请注明:XueLong的博客 » Android自定义图形-Shape的使用
更多相关文章
- Android实现EventBus登录界面与传值(粘性事件)
- Android输入设备处理流程
- Android(安卓)自定义 View——手势密码
- Android实现自定义view---绘制图片
- Android(安卓)按钮响应点击事件的三种实现方式
- Android(安卓)Monkey
- Android输入输出机制之来龙去脉
- android sendevent模拟滑动点击事件
- android中使用SAX, DOM, 或者pull 来解析XML文档