拖动Android按钮

时间:2011-05-28 15:29:52

标签: android

我想要一个Android按钮被触发,如果用户拖动它并在标准激活之外释放他的手指,如果它被点击并释放。

我试图使用ACTION_MOVE MotionEvent,但此事件仅在ACTION_DOWN和ACTION_UP事件之间触发。我也认为ACTION_OUTSIDE可能是一个解决方案。有没有办法做到这一点?

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

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;
            }
        });

2 个答案:

答案 0 :(得分:1)

只有在ViewRoot扩展了您的触控区域时才能触发ACTION_OUTSIDE。

如果你考虑拖动,你有2个选项,但是对于它们两个你可以检测到矩形,你的按钮位于屏幕上View.getHitRect(Rect)然后,根据这些知识,你可以决定是否有MotionEvent在里面是否是矩形。

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

答案 1 :(得分:0)

您可能想尝试一下Gesture Listener。有关如何使用它的相当好的描述here

似乎您需要扩展Button并为手势检测添加可能性以实现此目的。