2017-01-14 41 views
1

我希望爲Android創建一個簡單的遊戲,其中播放器將顯示一個按鈕表。他應該能夠在某些按鈕上滑動/拖動手指,並且只有在他停止觸摸屏幕後才能顯示他的移動結果。檢測懸停/滑動按鈕

我可以看到當Action_UP和ACTION_DOWN叫,但我不能使用Action_HOVER_MOVE:

View.OnTouchListener OTL = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) {   

     if (motionEvent.getAction()==MotionEvent.ACTION_DOWN 
       || motionEvent.getAction()==MotionEvent.ACTION_HOVER_MOVE) 

     { 
      Button B = (Button)view; 
      if (B.isActivated()) 
      { 
       String letter = B.getText()+""; 
       word+=letter; 
      } 
      B.setActivated(false); 
      Toast t = Toast.makeText(MainActivity.this,word,Toast.LENGTH_SHORT); 
      t.show(); 

     } 
     if (motionEvent.getAction()==MotionEvent.ACTION_UP) 
     { 
      Toast t = Toast.makeText(MainActivity.this,word,Toast.LENGTH_SHORT); 
      t.show(); 
      word=""; 
      resetButtons(); 
     } 

     return true; 
    } 
}; 

如何檢測掃過其他按鈕?

+0

這是人誰是搞不清楚爲什麼ACTION_HOVER_MOVE不工作可能不適合用於鼠標事件的人明顯的一個很好的問題。 –

回答

1

%的文檔,你可能想ACTION_MOVE

INT ACTION_MOVE
恆爲getActionMasked():長按(間ACTION_DOWN和ACTION_UP)期間的變化已經發生。該動作包含最近的點以及自上次下移或移動事件以來的任何中間點。

您遇到ACTION_HOVER_MOVE麻煩,因爲:

INT ACTION_HOVER_MOVE
恆爲getActionMasked():的變化發生,但指針不下來(不像ACTION_MOVE)。該動作包含最近的點以及自上次懸停移動事件以來的任何中間點。

此操作始終傳遞到指針下的窗口或視圖。

此操作不是觸摸事件,因此它被傳遞到onGenericMotionEvent(MotionEvent)而不是onTouchEvent(MotionEvent)。

來源:https://developer.android.com/reference/android/view/MotionEvent.html#ACTION_MOVE