其他分享
首页 > 其他分享> > Android OnTouchListener导致不稳定的拖动

Android OnTouchListener导致不稳定的拖动

作者:互联网

我有一个按钮(在代码中变量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?

解决方法:

我在另一篇文章中找到了答案 – 当我将event.getX()和event.getY()更改为event.getRawX()和event.getRawY()时,拖动是平滑的.

标签:android,ontouchlistener
来源: https://codeday.me/bug/20190825/1720182.html