Android MotionEvent:查看运动是否发生在视图之外

我有一个按钮和OnTouchListener附加到它.如何查找运动(当用户按下按钮时)是在内部还是外部发生? event.getAction()和event.getActionMasked()都只返回0,1或2,分别是ActionDown,ActionUp,ActionMove.有一个常量的MotionEvent.ACTION_OUTSIDE,它是4,但即使我在按钮外拖动触摸,我也不会收到它 – 我仍然从这两种方法中获得2.有什么问题?

UPD:我找到了很好的解决方案 – 只需在ACTION_UP之后检查焦点状态.如果它没有聚焦,则意味着移动发生在视图之外.

解决方法

该标志仅适用于 Windows,而不适用于视图.当您将手指移离视图时,您将获得ACTION_MOVE,该事件将保留在其生成的视图中.如果您需要澄清,请查看SeekBar的源代码:即使您将手指从酒吧移开,拇指仍会拖动!

要在Window级别执行此操作,请使用FLAG_WATCH_OUTSIDE_TOUCH,它可以正常工作.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...