1

マルチタッチをサポートするプロジェクトがあります。ボタンをタッチすると 1 が渡されます。ただし、最初のタッチしか取得できません。plsは私を助けてください、それは私たちの論文のためです.

ここに私のコードがあります:

 public boolean onTouch(View v, MotionEvent event) {
     int action = event.getActionMasked();
     if(action == MotionEvent.ACTION_DOWN){

       b1=b2=b3=b4=b5=b6="0";

        switch(v.getId()) {
           case R.id.button3:
               b3 = "1";
               break;
           case R.id.button2:
                b2 = "1";
                break;
           case R.id.button1:
               b1 = "1";
               break;
           case R.id.button4:
               b4 = "1"; 
               break;
           case R.id.button5:
               b5 = "1";
               break;
           case R.id.button6:
               b6 = "1";   

        }
     }  else if(action == MotionEvent.ACTION_POINTER_DOWN )
     { 
         switch(v.getId()) {
           case R.id.button3:
               b3 = "1";
               break;
           case R.id.button2:
                b2 = "1";
                break;
           case R.id.button1:
               b1 = "1";
               break;
           case R.id.button4:
               b4 = "1"; 
               break;
           case R.id.button5:
               b5 = "1";
               break;
           case R.id.button6:
               b6 = "1";   

        }
    }
  }

ここで、button1 と button2 が押されると、b1=1 と b2=1 を渡す必要がありますが、b1=1 のみを渡します。

4

2 に答える 2

2

trueタッチイベントを処理したことを示すために戻ります。

また、ブール値として文字列(b1からb6)を使用することは、明らかに悪い考えです。boolean代わりに使用してください。

于 2012-09-28T02:09:09.040 に答える
1

タッチ リスナーの問題 (すべてのボタンが同じメソッドを呼び出していると仮定) は、メソッドに入るたびに値がリセットされ、onTouch()処理する必要があるイベントごとに 1 回呼び出されることです。同じリスナーを通過する2つの一意のボタンをタッチする例では、メソッドはACTION_DOWN、最初にタッチしたボタンのイベントで1回呼び出され、次に2番目ACTION_DOWNにタッチしたボタンのイベントで2回呼び出されます。メソッドを 2 回実行するbxと、そのビューに関連付けられた値を設定する前に、すべての入力の値がゼロにリセットされるため、このコードでは常に 1 つのボタンのみがタッチ済みとして「マーク」されたままになります。

より良いグローバル状態を維持する代わりに、そのビューのACTION_UPおよびイベントの「マーク」状態をリセットすることを検討してください。ACTION_CANCELまた、これらの値を文字列として保存することは非常に非効率的であり、後で比較ロジックをより困難にするという他の投稿者にも同意します。

于 2012-09-28T03:18:50.627 に答える