2013-11-23 24 views
2

我目前正在構建一個文件管理器,它將爲其動作使用手勢,這就是爲什麼我需要這種手勢。我已經嘗試過在這裏搜索一些類似的主題,但我無法找到能夠給我一些想法。我發現的所有內容都是關於SimpleGestureListener(我已經使用過)以及GestureOverlayView(我認爲這對我的應用不好)。我認爲我可以將這個想法應用到onFling方法中,但是我意識到它不適用於我所瞄準的L形手勢...爲了簡單起見,我想知道以下內容:如何檢測android中的L形手勢?

enter image description here

所以,我需要弄清楚的是如何檢測水平和垂直滑動之間的點。有沒有其他方法可以用來檢測我的ListView上的那個點?我只需要一些關於如何去做的想法,我知道我可以弄明白。 :)

回答

0

您需要爲您的listview實現一個onTouch()事件來檢測用戶的觸摸模式。下面是我會怎麼處理這一個僞代碼:

@Override 
public boolean onTouch(View view, MotionEvent motionEvent) { 

    switch (motionEvent.getActionMasked()) { 
     case MotionEvent.ACTION_DOWN: 
      //Get the X and Y values the user touched down first 
      mDownX = motionEvent.getRawX(); 
      mDownY = motionEvent.getRawY(); 

      break; 

     case MotionEvent.ACTION_MOVE: { 
      float deltaX = motionEvent.getRawX() - mDownX; 
      float deltaY = motionEvent.getRawY() - mDownY; 

      if (deltaX > myMoveToTheRightThreashold 
       && Math.abs(deltaY) < myNoYmoveThreashold) { 
       moveToRight = true; 
      } 
      if (moveToRight && deltaY > myMoveUpThreshold) { 
       myLShapedGesture = true; 
       return true; 
      } 
      break; 
     } 
     return false; 
} 

我根本不考這個,我只是想給你如何處理的想法。您可能需要添加一個case MotionEvent.ACTION_UP來檢測用戶何時停止觸摸設備並在那裏執行所需的操作。

希望它有幫助。

+0

謝謝你給我一些關於如何去做的想法。讓我試試這些代碼,如果我做到了,我會回到這裏。謝謝。 –