2017-09-08 5 views
0

3秒間に3本の指で画面にタッチした場合にのみ、自分のアクティビティでメソッドを実行します。 アクティビティには1つのRelativeLayoutしかありません。RelativeLayoutでマルチタッチを検出する

私はAtomicBooleanと1つのスレッドを使用していますが、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で減算します。

私はあなたが何をする必要があるか、考えては3店舗それがない例threeTouchStartTimeのためのどこかに現在の時間に等しいポインタの数になるまで待って、ACTION_DOWN

  • です。
  • ACTION_MOVEに設定して現在時刻を取得し、threeTouchStartTimeで引きます。ポインタの数がまだ3で、経過時間が3秒を超えているかどうかをテストします。それができたら、あなたがしたいことをしてください。

GestureDetectorクラスをご覧ください。

関連する問題