Android OnTouchListener导致拖动不流畅

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?

尝试在ACTION_MOVE上放置一个打印语句(log cat),以打印一个样例拖动的newX和newY。这可能更有助于确定到底发生了什么。以恒定速度沿着一个方向前进。 - ghostbust555
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
6

我在另一篇帖子中找到了答案 - 当我将event.getX()event.getY()更改为event.getRawX()event.getRawY()时,拖动变得更加流畅。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,