Android停止从中心点向外拖出屏幕

时间:2017-07-19 14:17:18

标签: android ontouchevent ontouch

Image showing intended result

有没有办法阻止视图的中心点使用onTouch移动事件拖出屏幕?

我可以检测到这一点,但我需要逻辑来停止视图移动,然后在用户向后滑动时重新加入拖动。设置布尔值将禁用移动事件,这是不好的,将视图设置回已知的好点是跳跃的。

这里没有任何答案,所以我想知道它是否可能......

1 个答案:

答案 0 :(得分:0)

您可以使用它来限制屏幕边界。

int width=v.getLayoutParams().width;;
    int height=v.getLayoutParams().height;
    switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:

            dX = v.getX() - event.getRawX();
            dY = v.getY() - event.getRawY();

            return true;

        case MotionEvent.ACTION_MOVE:

            if (width == windowWidth && height == windowHeight){}
            else {
                v.animate()
                        .x(event.getRawX() + dX)
                        .y(event.getRawY() + dY)
                        .setDuration(0)
                        .start();

                if (event.getRawX() + dX + width > windowWidth) {
                    v.animate()
                            .x(windowWidth - width)
                            .setDuration(0)
                            .start();
                }
                if (event.getRawX() + dX < 0) {
                    v.animate()
                            .x(0)
                            .setDuration(0)
                            .start();
                }
                if (event.getRawY() + dY + height > windowHeight) {
                    v.animate()
                            .y(windowHeight - height)
                            .setDuration(0)
                            .start();
                }
                if (event.getRawY() + dY < 0) {
                    v.animate()
                            .y(0)
                            .setDuration(0)
                            .start();
                }

                return true;
            }

其中v是onTouchListener中的视图