Android で onTouchEvent() を使用して長押しを検出する方法は?

DDD
リリース: 2024-10-31 12:11:01
オリジナル
351 人が閲覧しました

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

Android での onTouchEvent() による長押しの検出

onTouchEvent() を使用してジェスチャを検出することは、Android 開発では一般的な方法です。ただし、デフォルトの実装には、長押しを処理する簡単な方法が含まれていません。この質問では、onTouchEvent() を使用して長押しを検出する戦略を検討します。

応答では、これを達成するための 2 つの方法が提案されています。

アプローチ 1: GestureDetector

GestureDetector は強力な Android クラスです。ジェスチャ検出専用に設計されています。長押しなどの一般的なジェスチャを認識するための使いやすいインターフェイスを提供します。

GestureDetector による長押し検出を実装するには、以下のコードで onTouchEvent() メソッドをオーバーライドし、GestureDetector インスタンスを登録します。

<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>
ログイン後にコピー

アプローチ 2: カスタム Runnable

GestureDetector が実現できない場合、代替アプローチとして、ACTION_DOWN イベントを登録し、Runnable を使用して ACTION_UP または ACTION_MOVE イベントが発生するまでの経過時間を確認することが含まれます。経過時間が事前に定義された長押し時間より短い場合、長押しが検出されます。

以下のコードは、このアプローチを示しています。

<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>
ログイン後にコピー

これらのメソッドのいずれかを採用することで、開発者は次のことができます。 onTouchEvent() メソッドを使用して、Android アプリケーション内での長押しを効果的に検出します。

以上がAndroid で onTouchEvent() を使用して長押しを検出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!