2016-07-30 7 views
0

ボタンの指を押してボタンの境界の外に移動すると、onTouchListenerは発砲を続けます。AndroidボタンのonTouchListenerが境界外で発砲する

同じことが、ボタン上の1本の指とボタンの外側の2本目の指を押すと発生します。私のonTouchListenerは、2本目の指で発生します。

どうすればこの問題を回避できますか? onTouchListenerは、ボタンの境界線を押したときだけ発射したい。ここで

Two fingers

One finger

onTouchListener実装

View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     if (fingerDown) { 
      xHistoricalFirstFinger = (int) event.getX(); 
      yHistoricalFirstFinger = (int) event.getY(); 
      xFirstClick = xHistoricalFirstFinger; 
      yFirstClick = yHistoricalFirstFinger; 
      //counter++; 
      fingerDown = false; 
     } 
     x = (int) event.getX(); 
     y = (int) event.getY(); 

     Log.v("Touched", client.remoteAdress.toString()); 

     mouseMoveProvider.nextX = x - xHistoricalFirstFinger; 
     mouseMoveProvider.nextY = y - yHistoricalFirstFinger; 
     mouseMoveProvider.Ready = true; 
     xHistoricalFirstFinger = x; 
     yHistoricalFirstFinger = y; 

     if (event.getAction() == MotionEvent.ACTION_UP) { 
      if (x - xFirstClick == 0 & y - yFirstClick == 0) { 
       new Thread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          client.MakeMove(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
          NetworkListener.HandleNetworkIsUreachableException(context); 
         } 
        } 
       }).start(); 
      } 

      fingerDown = true; 

     } 
     return true; 
    } 
}; 
+0

タッチリスナーの実装を共有します。クリックリスナーと一緒に行かない理由は何ですか? – Shaishav

+0

いいえ、私はリスナーをタッチする必要があります – Kotelnikov

答えて

0

使用onClickListenerているのですか?

onTouchListenerは、私はこれがあなたの助けになるかもしれないと思うすべてのタッチ(指ダウン、指まで...)

+0

私はボタンの境界内でのみ発砲するリスナーをタッチする必要があります – Kotelnikov

+0

私は、タッチイベントの座標がビュー内にあるかどうかを確認することができると思います。これをしていないが、ドキュメントだけを見ると、v.getDrawingRect()。contains(event.getX()、event.getY()) 'を実行すると、タッチイベントの座標がビューの四角形の内側にあるかどうかを調べることができます。ブール値。 – Gudin

+0

私はそれについて考えてきましたが、あなたの方法は一種の回避策ですね。より洗練されたソリューションは存在しますか? – Kotelnikov

1

のために発生します:

User touch and drags out of button region

基本的に、あなたもかどうかを確認する必要がありますACTION_MOVEを押して、タッチが四角形の境界を去ったかどうかを確認します。私はそれが助けて欲しい

関連する問題