Java Android: OnTouchlistener Release?
-
21-12-2019 - |
Вопрос
Java / Android Noob здесь, у меня есть проблема, имеющая проблему, где используя OnTouchListener, я меняю переменную x до x + 1, и это работает нормально, но когда я отпускаю, я хотел бы переменную x, пока он не ударит нулю, какИтак:
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
}
.
Теперь, когда это работает нормально, моя проблема приходит, когда я хочу, чтобы мой X продолжал уменьшаться после выпуска, но поскольку он находится под SetOntouchListener, то он не работает. Может быть, что-то вроде этого:
public boolean onTouchFalse(View v){
if(x>0){
x * 0.9
}
}
.
или даже что-то вроде
public boolean image.isOnScreen{
if(x>0){
x = x * 0.9
}
}
.
TL; DR: Я ищу какой-то слушатель, который я мог бы использовать для обесценения моего x.
Есть ли слушатель или какой-то класс, мне не хватает?Спасибо за любую помощь!
Решение
final Handler handler = new Handler();
image.post( new Runnable() {
@Override
public void run() {
x--;
handler.postDelayed(this, 100);
}
});
.
** Обратите внимание, что 100 - как долго между каждым вычитанием (в миллисеке)
Другие советы
нет сенсорных событий, если вы не прикасаетесь к экрану.События нужен триггер, может быть, у таймера может помочь.