JavaAndroid:lançamento do onTouchListener?
-
21-12-2019 - |
Pergunta
Java/Android noob aqui, tenho um problema onde usando onTouchListener eu mudo a variável x para x+1 e isso funciona bem, mas quando eu liberar gostaria que a variável x diminuísse de valor até chegar a zero, assim:
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
}
Agora isso funciona bem, meu problema surge quando quero que meu x continue diminuindo após o lançamento, mas como está em setOnTouchListener, não funciona.Talvez algo assim:
public boolean onTouchFalse(View v){
if(x>0){
x * 0.9
}
}
ou até mesmo algo como
public boolean image.isOnScreen{
if(x>0){
x = x * 0.9
}
}
dr:Estou procurando algum tipo de ouvinte que possa usar para depreciar meu x.
Existe um ouvinte ou alguma aula que estou perdendo?Obrigado por toda e qualquer ajuda!
Solução
final Handler handler = new Handler();
image.post( new Runnable() {
@Override
public void run() {
x--;
handler.postDelayed(this, 100);
}
});
** Observe que 100 é o tempo entre cada subtração (em milissegundos)
Outras dicas
Não há eventos de toque se você não estiver tocando na tela.Os eventos precisam de um gatilho, talvez um cronômetro possa ajudar.