不移动手指时不调用 onDrag

onDrag not called when not moving finger

我正在创建一个 Android 应用程序,支持在缩放图像内拖放。当用户将手指移近屏幕边缘时,我需要平移图像。如果事件的操作是 ACTION_DRAG_LOCATION.

,我会检查它

我面临的问题是,当用户的手指到达屏幕边缘并停止移动时,我的 onDragListener 中的 onDrag() 方法没有被调用。

我尝试重写 Activity 的 onTouch() 方法,但拖动时事件未触发。

有人知道实现这个的方法吗? 提前致谢。

我最终创建了一个在 onDrag 方法中启动的 Runnable:

可运行

private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        long millis = SystemClock.uptimeMillis();
        if (insideOfMe) {
            int[] locations = new int[2];
            mapAreaLayout.getLocationOnScreen(locations);
            int x = locations[0];
            int y = locations[1];
            float speed = 10;
            if (dragEvent.getX() - speed < x) {
                pinView.panTheImage(speed, 0);
            }
            if (dragEvent.getX() + speed > x + mapAreaLayout.getWidth()) {
                pinView.panTheImage(-speed, 0);
            }
            if (dragEvent.getY() - speed < y) {
                pinView.panTheImage(0, speed);
            }
            if (dragEvent.getY() + speed > y + mapAreaLayout.getHeight()) {
                pinView.panTheImage(0, -speed);
            }

        }


        handler.postAtTime(this, millis + 16);
    }
};

onDrag

if (event.getAction() == DragEvent.ACTION_DRAG_STARTED) {
                    handler.removeCallbacks(runnable);
                    handler.post(runnable);
}

然后我删除了对 Runnable 的回调:

if (event.getAction() == DragEvent.ACTION_DRAG_ENDED) {
                handler.removeCallbacks(runnable);
            }