Java Android: OnTouchListener Release?
-
21-12-2019 - |
Domanda
Java / Android noob qui, ho un problema in cui utilizzo OnTouchListener Modo la variabile X su x + 1 e che funziona bene, ma quando rilascio vorrei che la variabile X.Quindi:
Imageview image = (ImageView) findViewById(R.id.fgView);
image.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
mode=1;
break;
case MotionEvent.ACTION_UP:
mode=2;
break;
case MotionEvent.ACTION_POINTER_UP:
mode2=2;
break;
case MotionEvent.ACTION_MOVE:
mode=1;
break;
case MotionEvent.ACTION_POINTER_DOWN:
mode2=1;
break;
}
}
if(mode==1){
x++;
}
if(mode==2){
x * 0.9
}
//mode2 is filler
}
.
Ora che funziona bene, il mio problema arriva quando voglio che la mia X continui a diminuire dopo il rilascio, ma dal momento che è sotto SetyontoouchListener, allora non funziona. Forse qualcosa del genere:
public boolean onTouchFalse(View v){
if(x>0){
x * 0.9
}
}
.
o anche qualcosa come
public boolean image.isOnScreen{
if(x>0){
x = x * 0.9
}
}
.
TL; DR: Sto cercando qualche tipo di ascoltatore che potrei usare per deprezzare la mia x.
C'è un ascoltatore o qualche classe che mi manca?Grazie per qualsiasi aiuto!
Soluzione
final Handler handler = new Handler();
image.post( new Runnable() {
@Override
public void run() {
x--;
handler.postDelayed(this, 100);
}
});
.
** Si noti che il 100 è quanto tempo tra ogni sottrazione (in millisec)
Altri suggerimenti
Non ci sono eventi touch se non stai toccando lo schermo.Gli eventi hanno bisogno di un trigger, forse un timer potrebbe aiutare.