2017-10-10 1 views
1

Ich erstelle eine Klasse für erkennen, wenn Taste freigegeben wird, oder geklickt.ACTION_DOWN und UP, wenn Drucktaste

Jetzt muss ich Bild in ImageButton ändern, wenn die Schaltfläche geklickt wird, und wann wird freigegeben.

Das Problem ist hier, wenn ich die Taste drücken, MotionEvent.ACTION_DOWN und MotionEvent.ACTION_UP sind in der gleichen Zeit aktiviert, wenn Release, erhalte ich ACTION_DOWN Ereignis.

Warum erhalte ich 2 Ereignisse beim Klicken und nur UP wenn relased ist?

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

Sie vergessen Pause hinzuzufügen; nach dem ersten Fall innerhalb des Schalterblocks. –

Antwort

0

Hier ist der überarbeitete Code mit break-Anweisung

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; 
    } 
}); 
Verwandte Themen