2011-01-23 2 views
1

Несмотря на то, что я новичок в Android, я чувствую себя больше noob, чем когда-либо. У меня есть мнение, что расширяет SurfaceView, и там я переопределить onTouchEvent и поставить это тестирование коду внутри:Невозможно создать ACTION_MOVE с эмулятором

if (event.getAction() == MotionEvent.ACTION_MOVE) 
    { 
    return true; 
    } 
    return false; 

Затем, когда я запустить приложение в эмуляторе (с помощью Eclipse) в режиме отладки, нет никакого способа, я может заставить его вернуть true. Я нажимаю, удерживаю клик и перетаскиваю, а затем отпускаю, но всегда будет event.getAction == 0, несмотря ни на что.

Что мне не хватает?

ответ

0

getAction() возвращает комбинацию фактического флага действия и указателя указателя, который сгенерировал это событие (используется для мультитач).

Иметь только часть действий вы можете сделать и с MotionEvent.ACTION_MASK:

if (event.getAction() & MotionEvent.ACTION_MASK == 
           MotionEvent.ACTION_MOVE) { ... 

или если вы на API> = 8 можно непосредственно использовать getActionMasked(). Это полезно, если вам нужно протестировать его в switch.

similar question here

+0

Спасибо. Хорошо изучить некоторые из этих трюков для лучшей отладки. Я, наконец, нашел, что было неправильно с помощью старого метода проб и ошибок: я пока не знаю, почему, но если вы вернете false, вы не сможете обрабатывать действия. Я изменил, что «вернуть ложь» в true, и теперь все работает отлично. – Sergio

2

Вы должны вернуть "истинный" в методе "OnTouchEvent", чтобы избежать этой проблемы.

Смежные вопросы