拖动android按钮

拖动android按钮,android,Android,我想一个安卓按钮被触发,如果用户拖动它,释放他的手指在它除了标准的激活,如果它是点击和释放 我试图使用ACTION\u MOVE MotionEvent,但此事件仅在ACTION\u DOWN和ACTION\u UP事件之间触发。我还认为,外部行动可能是一个解决办法。有办法做到这一点吗 这是我的代码,删除了操作(b是一个按钮): 只有当您的触摸区域被ViewRoot扩展时,才能触发外部操作 如果您考虑拖动,您有两个选项,但对于这两个选项,您都可以检测按钮位于screen View.getHitR

我想一个安卓按钮被触发,如果用户拖动它,释放他的手指在它除了标准的激活,如果它是点击和释放

我试图使用ACTION\u MOVE MotionEvent,但此事件仅在ACTION\u DOWN和ACTION\u UP事件之间触发。我还认为,外部行动可能是一个解决办法。有办法做到这一点吗

这是我的代码,删除了操作(b是一个按钮):


只有当您的触摸区域被ViewRoot扩展时,才能触发外部操作

如果您考虑拖动,您有两个选项,但对于这两个选项,您都可以检测按钮位于screen View.getHitRect(Rect)上的矩形,然后根据这些知识,您可以确定MotionEvent是否位于Rect内


否则,您可以创建DragLayer并在那里实现所有逻辑

只有当您的触摸区域被ViewRoot扩展时,才能触发外部操作

如果您考虑拖动,您有两个选项,但对于这两个选项,您都可以检测按钮位于screen View.getHitRect(Rect)上的矩形,然后根据这些知识,您可以确定MotionEvent是否位于Rect内


否则,您可以创建DragLayer并在那里实现所有逻辑

您可能想尝试一下手势听众。关于如何使用它有一个相当好的描述


为了实现这一点,您似乎需要扩展按钮并添加手势检测的可能性。

您可能需要尝试一下手势监听器。关于如何使用它有一个相当好的描述


为了实现这一点,您似乎需要扩展按钮并添加手势检测的可能性。

谢谢,我将尝试一下。我不明白你所说的“通过ViewRoot扩展”是什么意思,你是想说ACTION_OUTSIDE是Android内部使用的东西,框架的用户不应该使用?有一种方法,允许你的视图具有比实际大小更大的触摸面积。事实上,那个事件并不意味着你要离开你的命中率。好吧,我想这有点像是在你观点的“边缘”移动。谢谢,我来试试。我不明白你所说的“通过ViewRoot扩展”是什么意思,你是想说ACTION_OUTSIDE是Android内部使用的东西,框架的用户不应该使用?有一种方法,允许你的视图具有比实际大小更大的触摸面积。事实上,这一事件并不意味着你在你的命中率之外移动。好吧,我想这有点像在你的观点的“边缘”移动。
b.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {

                if (event.getAction()== MotionEvent.ACTION_DOWN){
                    //Tiggers correctly
                } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    //Triggers correctly between events, but not when the finger is dragged ontop outside of the element
                } else if (event.getAction() == MotionEvent.ACTION_OUTSIDE){
                    //Can't get this to trigger in any case but I think it might be the solution
                } else if (event.getAction() == MotionEvent.ACTION_UP){
                    //Triggers correctly
                }
                }
                return false;
            }
        });