#android
#Android
Вопрос:
Я пишу простой код на ontouchevent .. код
class MyTouchListener implements View.OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN)
{ Log.i(TAG, "^^^^^^^^^^^ACTION DOWN^^^^^^^^^^^^");
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
Log.i(TAG, "^^^^^^^^^^^ACTION UP^^^^^^^^^^^^");
}
}
пока я нажимал на экран, он печатает ^^^^^ ДЕЙСТВИЕ ВНИЗ ^^^^^
Но когда я выпустил экран, он не печатает ^^^^^^ ДЕЙСТВИЕ ВВЕРХ ^^^^^^….
означает событие движения.Сбой ACTION_UP..почему это так??
Комментарии:
1. Какое значение вы возвращаете из метода onTouch ()? Если вы возвращаете false — означает, что прослушиватель больше не будет получать никаких событий, поэтому вы должны вернуть true .
Ответ №1:
Попробуйте использовать MotionEvent.ACTION_CANCEL
@Override
public boolean onTouch(final View view, final MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
setColorFilter(Color.argb(155, 185, 185, 185));
}
else if (motionEvent.getAction() == MotionEvent.ACTION_UP || motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {
setColorFilter(Color.argb(0, 185, 185, 185));
}
return false;
}
или добавьте журнал в свой метод ontouch
Log.d («tag», «MotionEvent=» MotionEvent);
Комментарии:
1. Сработало для меня, спасибо. Если вы удерживали нажатой кнопку, а затем включился поворот экрана, вы получили бы отмену.
Ответ №2:
ну, ACTION_DOWN происходит только один раз после того, как это действие должно произойти, и в и действие вверх…
но есть одна проблема, например, если у вас есть осязаемая область размером 48 точек x 48 точек, и если вы касаетесь этой области и отводите палец (при перетаскивании) Я имею в виду, что вы нажимаете и отводите палец от сенсорной области, чем действие вверх не произойдет!!!
Действие вверх произойдет только в том случае, если вы сделаете снимок экрана, но вы все еще находитесь в области касания. Я надеюсь, вы понимаете меня, что я пытаюсь сказать.
если вы хотите, чтобы при наведении курсора мыши на сенсорную область не перетаскивайте палец и не отводите палец от экрана, вы знаете, точно так же, как при записи на пленку, произойдет событие up