Heim >Java >javaLernprogramm >Wie erkennt man langes Drücken mit onTouchEvent() in Android?
Die Verwendung von onTouchEvent() zum Erkennen von Gesten ist eine gängige Praxis in der Android-Entwicklung. Die Standardimplementierung bietet jedoch keine einfache Möglichkeit, mit langen Drücken umzugehen. In dieser Frage werden Strategien zum Erkennen langer Druckvorgänge mithilfe von onTouchEvent() untersucht.
Die Antwort schlägt zwei Methoden vor, um dies zu erreichen:
GestureDetector ist eine leistungsstarke Android-Klasse Speziell für die Gestenerkennung entwickelt. Es bietet eine benutzerfreundliche Schnittstelle zum Erkennen gängiger Gesten, einschließlich langes Drücken.
Um die Erkennung langer Drücken mit GestureDetector zu implementieren, überschreibt der folgende Code die Methode onTouchEvent() und registriert eine GestureDetector-Instanz:
<code class="java">@Override public boolean onTouchEvent(MotionEvent event) { // Register and check for long presses GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onLongPress(MotionEvent e) { // Perform long press action return true; } }); gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); }</code>
Wenn GestureDetector nicht möglich ist, besteht ein alternativer Ansatz darin, ein ACTION_DOWN-Ereignis zu registrieren und ein Runnable zu verwenden, um zu prüfen, wie viel Zeit verstrichen ist, bevor ACTION_UP- oder ACTION_MOVE-Ereignisse auftreten. Wenn die verstrichene Zeit kürzer als die vordefinierte lange Druckdauer ist, wird ein langer Druck erkannt.
Der folgende Code veranschaulicht diesen Ansatz:
<code class="java">final Handler handler = new Handler(); Runnable mLongPressed = new Runnable() { public void run() { Log.i("", "Long press!"); } }; @Override public boolean onTouchEvent(MotionEvent event, MapView mapView){ if(event.getAction() == MotionEvent.ACTION_DOWN) handler.postDelayed(mLongPressed, ViewConfiguration.getLongPressTimeout()); if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP)) handler.removeCallbacks(mLongPressed); return super.onTouchEvent(event, mapView); }</code>
Durch die Verwendung einer dieser Methoden können Entwickler dies tun Erkennen Sie mithilfe der onTouchEvent()-Methode effektiv langes Drücken in ihren Android-Anwendungen.
Das obige ist der detaillierte Inhalt vonWie erkennt man langes Drücken mit onTouchEvent() in Android?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!