2017-09-08 75 views
0

只有當用戶在3秒內用三根手指觸摸屏幕時,我想在我的活動中運行一個方法。 我的活動只有一個RelativeLayout。在RelativeLayout上檢測多點觸摸

我正在使用AtomicBoolean和一個線程,但是我無法讓我的代碼在3個手指觸摸屏幕時「知道」。

這裏是我的代碼部分:

方法 MotionEvent
public boolean onTouchEvent(MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       wantedTime = event.getPointerCount(); 
       T = new Thread() { 
        public void run() { 
         while (canThreadRun.get()) { 

          wantedTime - = 100; 
          UpdateText(timerText, wantedTime); 
          try { 
           Thread.sleep(100L); 
          } catch (InterruptedException e) { 
           return; 
          } 
         } 
        } 
       }; 
       canThreadRun.set(true); 
       T.start(); 

       break; 
      case MotionEvent.ACTION_UP: 
       canThreadRun.set(false); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       break; 
     } 
    return false; 
} 

回答

0

getPointerCount()會給你手指觸摸屏幕的數量。如果您的設備支持多點觸控,則可能會返回1或更多,否則返回1.

但是,您將它存儲在wantedTime變量中,然後用100減去它,這沒有意義。

我想,你需要做的是

  • ACTION_DOWN,等到指針等於3店當前時間的地方,例如threeTouchStartTime的數量,當它。
  • ACTION_MOVE,獲取當前時間,並用threeTouchStartTime減去它。測試指針數量是否仍然是3並且經過時間超過3秒。當它發生時,然後做你想做的事情。

你可能想看看GestureDetector類。