2017-10-10 6 views
1

ボタンがリリースされたとき、またはクリックされたときに検出するクラスを作成します。ACTION_DOWNとUP(プッシュボタンの場合)

ボタンをクリックすると、イメージボタンをクリックしたときにイメージを変更する必要があります。

ボタンを押すと、MotionEvent.ACTION_DOWNとMotionEvent.ACTION_UPが同時にアクティブになり、リリース時にACTION_DOWNイベントが受信されます。

なぜ私はクリックしたときに2つのイベントを受け取るのですか?ここで

button.setOnTouchListener(new View.OnTouchListener() 
{ 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     switch (event.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
      { 
       Log.d("log", "onTouch: push"); 
       button.setImageResource(R.drawable.buttonmason); 
      } 

      case MotionEvent.ACTION_UP: 
      { 
       Log.d("log", "onTouch: release"); 
       button.setImageResource(R.drawable.buttonmas); 
      } 
     } 

     if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL) && mAutoIncrement) 
     { 
      mAutoIncrement = false; 
     } 
     else if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL) && mAutoDecrement) 
     { 
      mAutoDecrement = false; 
     } 

     return false; 
    } 
}); 
+4

と改訂されたコードです。スイッチブロック内の最初のケースの後。 –

答えて

0

はあなたが休憩を追加することを忘れbreak文

button.setOnTouchListener(new View.OnTouchListener() 
{ 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     switch (event.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
      { 
       Log.d("log", "onTouch: push"); 
       button.setImageResource(R.drawable.buttonmason); 
      } 
      break 
      case MotionEvent.ACTION_UP: 
      { 
       Log.d("log", "onTouch: release"); 
       button.setImageResource(R.drawable.buttonmas); 
      } 
     } 

     if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL) && mAutoIncrement) 
     { 
      mAutoIncrement = false; 
     } 
     else if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL) && mAutoDecrement) 
     { 
      mAutoDecrement = false; 
     } 

     return false; 
    } 
});