0

我目前正在使用 MotionEvent.ACTION_MOVE 函数来检测用户是否移动了对象(在本例中为 ImageView)。

问题是现在我的算法变得更加复杂,我需要区分用户是点击了这个对象还是移动了它。

我尝试使用 MotionEvent.ACTION_DOWN 函数,但问题是,每次单击对象时,也会触发 MotionEvent.ACTION_MOVE。

怎样才能做到这一点?(代码非常受欢迎)

提前致谢。

== 编辑 ==

这是我的代码:

img_view.setOnTouchListener(new View.OnTouchListener()
{   
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        switch(event.getAction())
        {
                case MotionEvent.ACTION_DOWN :
            {
            }                   
            break;

            case MotionEvent.ACTION_MOVE :
            {
            }
                    break;  

            case MotionEvent.ACTION_UP :
            {
            }
            break;
            }

        return true;
    }
});
4

2 回答 2

1

为了检测四处移动,您要检查某人的手指是否……正在四处移动:)

在 ACTION_DOWN 中检查位置是否正在改变。如果是,在某种程度上,您知道用户正在屏幕上拖动手指。

您可能想看看这个教程项目,它是一个简单的 ImageView 示例,具有多个操作,例如拖动、单击和捏合。

于 2013-04-09T15:06:20.960 回答
0

回答 :

        final GestureDetector gesture_getector = new GestureDetector(HomeActivity.this, new GestureListener());
    view_img.setOnTouchListener(new View.OnTouchListener()
    {
        @Override
        public boolean onTouch(final View view, final MotionEvent event)
        {
            if (gesture_getector.onTouchEvent(event))
            {
                return true;
            }

                // End of move object detection
            if (event.getAction() == MotionEvent.ACTION_UP)
            {
                if (cursor_is_scrolling)
                {
                    cursor_is_scrolling  = false;                       
                };
            }

            return false;
        }
    });


private class GestureListener extends SimpleOnGestureListener
{
    @Override
    public boolean onDown(MotionEvent e) { return true; }

    // Single click detection
    @Override
    public boolean onSingleTapUp(MotionEvent e)
    {
        return true;
    }

    // Move object detection
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
    {
        cursor_is_scrolling  = true;

        return true;
    }
}
于 2013-04-09T18:20:20.660 回答