2017-09-08 123 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类。