2013-01-20 27 views
0

我想用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;  
} 

回答

0

的ImageView的是滾動型內。滾動視圖進行滾動的時間越長,移動的方式就越長。

我刪除了滾動視圖。

0

我想你需要你的愛撫方法掛鉤到一個ondraglistener代替

+0

onDrag()在觸摸ImageView時根本不會被調用。 – Toast