Android Touch UP не работает
Я вроде застрял с этим проектом в Android, я пытаюсь выяснить, почему это не работает, но я понятия не имею. Это, кстати, пользовательский вид на всякий случай.
Проблема в том, что событие ACTION_DOWN работает отлично, я получаю отладку консоли "Touching 1" и "Touching 2", но ACTION_UP,ACTION_CANCEL или default: не работают, я не могу понять это, поэтому любая помощь будет очень признательна, спасибо
public void doTouch(MotionEvent event)
{
int action = event.getAction();
float x = event.getX();
float y = event.getY();
switch(action)
{
case MotionEvent.ACTION_DOWN:
if(x < 125 && y < 125){
for(AnimatedSprite a:mSprites)
{
if(a.getID() == 1)
{
a.AdvanceToFrame(0);
touching = true;
System.out.println("Touching 1");
//touch_obj1 = true;
}
}
}
else if(x > getWidth()-125 && y > getHeight()-125)
{
for(AnimatedSprite a:mSprites)
{
if(a.getID() == 2)
{
a.AdvanceToFrame(1);
System.out.println("Touching 2");
touching = true;
//touch_obj2 = true;
}
}
}
else
{
touching = false;
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
System.out.println("Touch UP");
touching = false;
break;
default:
System.out.println("NOT Touching");
touching = false;
break;
}
}
вот где я вызываю функцию doTouch
public boolean onTouchEvent(MotionEvent event)
{
thread.doTouch(event);
return super.onTouchEvent(event);
}
2 ответа
Похоже, ваша проблема в том, как вы обрабатываете сенсорные события в onTouchEvent
, Вы должны вернуть истину из onTouchEvent
если вы хотите обрабатывать сенсорные события. Итак, если вы получите ACTION_DOWN
и вернуть ложь из onTouchEvent
система не будет отправлять вам больше событий касания до следующего ACTION_DOWN
событие.
Не зная точно, что вы делаете с сенсорными событиями, я не могу дать вам решение, которое определенно подойдет для вашей ситуации, но если вы хотите получать любые сенсорные события, кроме ACTION_DOWN
вам нужно будет вернуть истину из onTouchEvent
,
Хорошо, я исправил это, что я должен был сделать, это
1) я изменил функцию, чтобы она могла возвращать
boolean public bool doTouch(MotionEvent event)
2) конечно я вернул true в конце этой функции
3) при звонке я так и сделал
public boolean onTouchEvent(MotionEvent event)
{
return doTouch(event);
}