不移动手指时不调用 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);
}
我正在创建一个 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);
}