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

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 に答える