我想用ImageView製作遊戲杆。 用戶將觸摸視圖並移動「棒」。ImageView.setOnTouchListener檢測不到長時間移動
ivjoystick.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
touch(event);
return true;
}
});
當用戶觸摸視圖,檢測到事件並且操縱桿按需要工作時調用觸摸方法。 只要手指離開「起點」,onTouch方法就不會再被調用(手指移動時)。喬伊斯克結冰了。
此行爲獨立於觸摸方法的功能。然而,這裏是它的代碼:
private void touch(MotionEvent event) {
if (!(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_UP))
return;
double oldx = x;
double oldy = y;
x = (event.getX() - centerx)/rpad;
y = (event.getY() - centery)/rpad;
if (Math.sqrt(x * x + y * y) > 1) {
x /= Math.sqrt(x * x + y * y);
y /= Math.sqrt(x * x + y * y);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
x = 0;
y = 0;
}
if (SystemClock.uptimeMillis() - last < minintervall && event.getAction() == MotionEvent.ACTION_MOVE)
return;
if (oldx != x || oldy != y) {
draw();
send();
}
return;
}
onDrag()在觸摸ImageView時根本不會被調用。 – Toast