Heim > Java > javaLernprogramm > Hauptteil

Wie erkennt man langes Drücken mit onTouchEvent() in Android?

DDD
Freigeben: 2024-10-31 12:11:01
Original
351 Leute haben es durchsucht

How to Detect Long Presses with onTouchEvent() in Android?

Langes Drücken mit onTouchEvent() in Android erkennen

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:

Ansatz 1: GestureDetector

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>
Nach dem Login kopieren

Ansatz 2: Benutzerdefiniertes Runnable

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!