Java Android: Ontouchlistener Libération?
-
21-12-2019 - |
Question
Java / Android noob ici, j'ai un problème où utilisez AOUTOUCHLISTENER, je modifie la variable x à x + 1 et qui fonctionne bien, mais lorsque je libère, je voudrais que la variable x diminue de la valeur jusqu'à ce qu'elle frappe zéro, commeDonc:
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
}
Maintenant cela fonctionne bien, mon problème vient quand je veux que mon X continue à diminuer après la libération, mais comme il est sous SetOnTouchlistener, alors cela ne fonctionne pas. Peut-être quelque chose comme ceci:
public boolean onTouchFalse(View v){
if(x>0){
x * 0.9
}
}
ou même quelque chose comme
public boolean image.isOnScreen{
if(x>0){
x = x * 0.9
}
}
TL; DR: Je cherche une sorte d'auditeur que je pourrais utiliser pour déprécier mon x.
Y a-t-il un auditeur ou une classe qui me manque?Merci pour toute aide!
La solution
final Handler handler = new Handler();
image.post( new Runnable() {
@Override
public void run() {
x--;
handler.postDelayed(this, 100);
}
});
** Notez que le 100 est combien de temps entre chaque soustraction (en millisecs)
Autres conseils
Il n'y a pas d'événements tactiles si vous ne touchez pas l'écran.Les événements ont besoin d'un déclencheur, peut-être qu'une minuterie pourrait aider.