1

我在玩GestureDetector,注意在OSX上的模擬器上運行時,永遠不會調用onFling方法。在OSX仿真器上未調用onFling?

我可以使它在windows下工作,但不能在osx上工作。

我用出色的代碼從這個帖子: Fling gesture detection on grid layout

這是代碼:

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    gestureDetector = new GestureDetector(new MyGestureDetector()); 

} 



public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 
    gestureDetector.onTouchEvent(event); 
    return false; 
} 

protected void addFlingSupportToView(int view) { 
    // TODO Auto-generated method stub 

    View v = (View) findViewById(view); 
    v.setOnTouchListener(this); 

} 

class MyGestureDetector extends SimpleOnGestureListener { 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // right to left swipe 
      if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 

      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 

       // Log.i("vampidroid", CryptDetails.this.toString()); 


       finish(); 

      } 
     } catch (Exception e) { 
      // nothing 

     } 
     return false; 
    } 
} 

的問題是,雖然OnTouch被調用時,OnFling事件不會被調用!

我在窗戶上玩這個代碼,它工作正常。當我更改爲osx並嘗試一下時,它不起作用。

在設備上,代碼按預期工作。

你知道這可能是什麼嗎?它只與osx有關嗎?

我沒有在網上找到任何東西,所以我想也許這只是與我或沒有人檢查。

在此先感謝。

回答

0

我最近遇到完全相同的問題。不幸的是,幸運的是,我沒有從這篇文章中得到任何幫助,但後來在運氣好的時候解決了這個問題。答案很簡單:不要使用TRACKPAD在模擬器中做FLING,因爲它不會奏效。只需插入一個外部鼠標,它應該工作得很好。

p.s.在我的情況下,我正在用macbookpro進行測試。

編輯: 事實證明,它與內部或外部沒有任何關係..對於混淆抱歉。至少對我而言,這裏真正的罪魁禍首是因爲我已經在系統偏好設置中啓用了「標籤點擊」並嘗試了兩次拖拽。默認的「按壓點擊」功能完美無缺。

+0

由於輸入的處理方式相同,聽起來很奇怪。 – Rob 2012-11-03 16:39:21