我正在创建一个Android应用程序,在缩放图像内部提供拖放支持。当用户将手指移动到靠近屏幕边缘时,我需要平移图像。如果事件的动作是ACTION_DRAG_LOCATION,我会检查这个。
我遇到的问题是当用户的手指到达屏幕边缘并停止移动时,我的onDragListener中的onDrag()方法不会被调用。
我尝试覆盖Activity的onTouch()方法,但拖动时事件没有触发。
有人知道实现这一目标的方法吗? 提前谢谢。
答案 0 :(得分:0)
我最终创建了一个Runnable,我在onDrag方法中开始:
可运行
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);
}