2013-11-04 103 views
2

我創建了一個應用程序,可以在圖片上繪製。繪圖是通過一個pictureView,一個帶位圖的畫布和一個onTouchListener實現的。 我想添加一個功能,當兩個手指按下時,會撤消最後一個操作短按按。 我這樣做達到的:Android檢測雙指長按

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_UP){ 
    //undo 
} 

我想撤消所有的繪製操作時,有兩個手指按。 我嘗試過這樣的事情,但它只會檢測一次。

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN){ 
    numberOfDown++; 
     if(numberOfDown>100){ 
      //undo 
     } 
} 

我該如何達到我想要的?

+1

您是否嘗試過比較'DOWN' v'UP'的時間?每個手指只能觸發一次「DOWN」。 – Geobits

+0

我剛剛嘗試過,並不完全是我想要的。它現在只會撤銷發佈時的所有操作。 –

回答

1

我不確定操作索引是否從零開始爲主要手指或非主要手指,因此您可能需要將這些0翻轉爲1。

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN && event.getActionIndex()==0){ 
    mSecondFingerTimeDown = System.currentTimeMillis(); 
} 

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_UP && event.getActionIndex()==0){ 
    if ((System.currentTimeMillis()-mSecondFingerDownTime) >= LONG_PRESS_TIME_MILLIS) 
     //long double-press action 
    else 
     //short double-press action 
} 
+0

我意識到有一種情況,用戶將一根手指放下一會兒,然後輕敲一下第二根手指(短時間或長時間),然後釋放它而不釋放第一根手指。即使第一根手指尚未釋放,此代碼也會註冊爲雙指輕按。爲了避免這種情況變得更加複雜。在上面的代碼中,不是立即執行操作,而是存儲哪種操作(長按或短按)待處理,並存儲時間。當第一根手指執行ACTION_UP時,檢查是否在很短的時間內決定是否執行掛起的操作。 – Tenfour04