Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में स्वाइप डायरेक्शन (बाएं/दाएं, ऊपर/नीचे) कैसे डिटेक्ट करें?

परिचय

यह ट्यूटोरियल दर्शाता है कि Android में स्वाइप जेस्चर (बाएं, दाएं, ऊपर, नीचे) कैसे डिटेक्ट करें। हम GestureDetector और कस्टम OnTouchListener का उपयोग करेंगे।

आवश्यक चरण

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project से नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="स्वाइप करके जेस्चर डिटेक्ट करें"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: मुख्य गतिविधि (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    OnSwipeTouchListener onSwipeTouchListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // लिस्टनर को रूट व्यू से अटैच करें
        onSwipeTouchListener = new OnSwipeTouchListener(this, findViewById(R.id.relativeLayout));
    }

    // स्वाइप डिटेक्शन के लिए कस्टम टच लिस्टनर
    public static class OnSwipeTouchListener implements View.OnTouchListener {
        private final GestureDetector gestureDetector;
        Context context;

        OnSwipeTouchListener(Context ctx, View mainView) {
            gestureDetector = new GestureDetector(ctx, new GestureListener());
            mainView.setOnTouchListener(this);
            context = ctx;
        }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }

        private final class GestureListener extends GestureDetector.SimpleOnGestureListener {
            private static final int SWIPE_THRESHOLD = 100;           // न्यूनतम दूरी (पिक्सेल)
            private static final int SWIPE_VELOCITY_THRESHOLD = 100;  // न्यूनतम वेग

            @Override
            public boolean onDown(MotionEvent e) {
                return true; // जेस्चर शुरू होने दें
            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                boolean result = false;
                try {
                    float diffY = e2.getY() - e1.getY();
                    float diffX = e2.getX() - e1.getX();

                    // क्षैतिज स्वाइप (बाएं/दाएं)
                    if (Math.abs(diffX) > Math.abs(diffY)) {
                        if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                            if (diffX > 0) {
                                onSwipeRight();
                            } else {
                                onSwipeLeft();
                            }
                            result = true;
                        }
                    }
                    // लंबवत स्वाइप (ऊपर/नीचे)
                    else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                        if (diffY > 0) {
                            onSwipeBottom();
                        } else {
                            onSwipeTop();
                        }
                        result = true;
                    }
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
                return result;
            }
        }

        // कॉलबैक मेथड्स - इन्हें ओवरराइड करें
        void onSwipeRight() {
            Toast.makeText(context, "दाएं स्वाइप किया", Toast.LENGTH_SHORT).show();
        }
        void onSwipeLeft() {
            Toast.makeText(context, "बाएं स्वाइप किया", Toast.LENGTH_SHORT).show();
        }
        void onSwipeTop() {
            Toast.makeText(context, "ऊपर स्वाइप किया", Toast.LENGTH_SHORT).show();
        }
        void onSwipeBottom() {
            Toast.makeText(context, "नीचे स्वाइप किया", Toast.LENGTH_SHORT).show();
        }
    }
}

चरण 4: मैनिफेस्ट फ़ाइल (AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

ऐप चलाएं

डिवाइस कनेक्ट करें, Run क्लिक करें। स्क्रीन पर किसी भी दिशा में स्वाइप करें - टोस्ट मैसेज दिखाएगा कि कौन सी दिशा डिटेक्ट हुई।

Android में स्वाइप डायरेक्शन (बाएं/दाएं, ऊपर/नीचे) कैसे डिटेक्ट करें?

महत्वपूर्ण बिंदु

  • SWIPE_THRESHOLD - न्यूनतम स्वाइप दूरी (पिक्सेल में)। छोटा = अधिक संवेदनशील।
  • SWIPE_VELOCITY_THRESHOLD - न्यूनतम स्वाइप गति। तेज स्वाइप ही मान्य होंगे।
  • onDown() में true रिटर्न करना आवश्यक है ताकि फ्लिंग इवेंट मिले।
  • यह क्लास रीयूजेबल है - किसी भी व्यू पर `setOnTouchListener(new OnSwipeTouchListener(...))` लगाएं।
  • आधुनिक विकल्प: GestureDetectorCompat या Jetpack Compose में pointerInput / detectDragGestures।
  1. Android में बाएं/दाएं स्वाइप जेस्चर कैसे हैंडल करें? Android में बाएं/दाएं स्वाइप जेस्चर कैसे हैंडल करें?

    परिचय यह ट्यूटोरियल दिखाता है कि Android में बाएं और दाएं स्वाइप जेस्चर कैसे डिटेक्ट करें। हम एक रीयूजेबल OnSwipeTouchListener क्लास बनाएंगे जो `GestureDetector` का उपयोग करता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से नया प्रोजेक्ट बनाएं। चरण 2: लेआउट फ़ाइ

  1. iPhone और Android के बीच निर्बाध फ़ाइल शेयरिंग: त्वरित, सुरक्षित तरीके iPhone और Android के बीच निर्बाध फ़ाइल शेयरिंग: त्वरित, सुरक्षित तरीके

    नमस्ते! मैं आपके साथ अपनी म्यूजिक फ़ाइलें शेयर करने में असमर्थ हूं। हालांकि SHAREit और Xender के बारे में सुना है, आपकी क्या राय है? एक दोस्त ने कल शाम एक बार फिर पूछा। जब स्मार्टफोन की बात आती है तो iPhone और Android दोनों विश्व स्तर पर एक मौजूदा यूज़रबेस का आनंद लेते हैं। हालांकि, दो प्लेटफार्मों

  1. अपने PC और Android फोन के बीच फ़ाइलें आसानी से ट्रांसफर करें: चरण-दर-चरण गाइड अपने PC और Android फोन के बीच फ़ाइलें आसानी से ट्रांसफर करें: चरण-दर-चरण गाइड

    यदि आप हाल ही में Android फोन पर स्विच हुए हैं या एक नया PC लाए हैं। फ़ाइल साझाकरण किसी बिंदु पर आवश्यक है और यदि आप इसमें नए हैं, तो घबराएं नहीं, हमने आपको कवर किया है, क्योंकि यह ब्लॉग कंप्यूटर से Android पर अपनी फ़ाइलें साझा करने के आवश्यक तरीकों की व्याख्या करता है। ऐसे कई कारण हैं जिनके लिए आप