Метод Touch Release в Android
Я пытаюсь захватить событие TouchRelease
в Android. Я видел, что event.getAction()
возвращает тип действия. Но внутри onTouchEvent
он всегда дает действие ACTION_DOWN
.
Вы знаете, как захватить событие сенсорного релиза.
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG,""+event.getAction());
return super.onTouchEvent(event);
}
Ответы
Ответ 1
У вас есть ACTION_UP
: http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_UP
View view = new View();
view.setOnTouchListener(new OnTouchListener () {
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Log.d("TouchTest", "Touch down");
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
Log.d("TouchTest", "Touch up");
}
return true;
}
}
Ответ 2
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG,""+event.getAction());
return true; // Required for recieving subsequent events (ACTION_MOVE, ACTION_UP)
}
Ответ 3
У меня была такая же проблема с классом SurfaceView
. Вот как я его исправил: после включения вашего свойства просмотра long clickable (через setLongClickable (true)), он должен работать.
Ответ 4
view.setOnTouchListener(new OnTouchListener () {
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
// release
return false;
} else if(event.getAction() == MotionEvent.ACTION_DOWN) {
// pressed
return true;
}
return super.onTouchEvent(event);
}