3

ボタン (コード内の変数 theButton) があり、それを親ビューの周りにドラッグできるようにしたいと考えています。その OnTouchListener は次のとおりです。

    OnTouchListener touchBListener = new View.OnTouchListener() 
    {       
        public float offsetX;
        public float offsetY;

        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            int theAction = event.getAction();
            switch (theAction)
            {
                case MotionEvent.ACTION_DOWN:
                    // Button down
                    offsetX = theButton.getX() - event.getX();
                    offsetY = theButton.getY() - event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    // Button moved
                    float newX = event.getX() + offsetX;
                    float newY = event.getY() + offsetY;
                    v.setX(newX);
                    v.setY(newY);
                    break;
                case MotionEvent.ACTION_UP:
                    // Button up
                    break;
                default:
                    break;
            }
            return true;
        }
    };
    theButton.setOnTouchListener(touchBListener);

ボタンをドラッグすると、ドラッグの一般的な方向に移動しますが、「現在の」スポットとドラッグの前のスポットの間を行き来し続けます。ドラグが右上方向に行くと、何らかの理由でジャンプが大きくなります。

OnTouchListener を使用して「スムーズな」ドラッグが可能ですか、代わりに OnDragListener を使用する必要がありますか?

4

1 に答える 1

6

別の投稿で答えを見つけました- と を に変更すると、event.getX()ドラッグがスムーズになります。event.getY()event.getRawX()event.getRawY()

于 2013-08-24T15:17:24.013 に答える