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

एंड्रॉइड में एक्शन डाउन इवेंट का उपयोग कैसे करें?

एंड्रॉइड में ACTION_DOWN टच इवेंट हैंडल करें

यह ट्यूटोरियल दिखाता है कि OnTouchListener और MotionEvent.ACTION_DOWN का उपयोग करके टच डाउन इवेंट (उंगली स्क्रीन छूने पर) कैसे संभालें।

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

एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं।

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="24dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/touchView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:textSize="24sp"
        android:textStyle="bold"
        android:gravity="center"
        android:background="#2196F3"
        android:textColor="#FFFFFF"
        android:text="यहां टच करें\n(ACTION_DOWN)"
        android:layout_marginTop="30dp"/>

</LinearLayout>

चरण 3: एक्टिविटी कोड (src/MainActivity.java)

package com.example.actiondowndemo;

import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.MotionEventCompat;

public class MainActivity extends AppCompatActivity {

    private TextView touchView;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        touchView = findViewById(R.id.touchView);
        touchView.setText("ACTION DOWN टेस्ट\nयहां टच करें");

        touchView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // एक्शन मास्क प्राप्त करें (मल्टी-टच के लिए)
                int action = MotionEventCompat.getActionMasked(event);

                if (action == MotionEvent.ACTION_DOWN) {
                    // उंगली स्क्रीन छुई
                    Toast.makeText(MainActivity.this, 
                        "ACTION_DOWN: टच शुरू हुआ", Toast.LENGTH_SHORT).show();
                    
                    // विजुअल फीडबैक
                    v.setBackgroundColor(0xFF4CAF50); // हरा
                    ((TextView) v).setText("दबाया गया!\nACTION_DOWN");
                    return true; // इवेंट खपत हुआ
                }
                
                return false; // अन्य इवेंट्स सिस्टम को पास करें
            }
        });
    }
}

टच इवेंट प्रकार

कॉन्स्टेंटविवरणकब फायर होता है
ACTION_DOWNप्राथमिक पॉइंटर डाउनपहली उंगली छूती है
ACTION_POINTER_DOWNअतिरिक्त पॉइंटर डाउनदूसरी/तीसरी उंगली छूती है
ACTION_MOVEपॉइंटर मूवउंगली घूमती है
ACTION_UPप्राथमिक पॉइंटर अपअंतिम उंगली उठती है
ACTION_POINTER_UPअतिरिक्त पॉइंटर अपगैर-अंतिम उंगली उठती है
ACTION_CANCELजेस्चर कैंसलसिस्टम द्वारा इंटरसेप्ट

मल्टी-टच के लिए एक्शन इंडेक्स प्राप्त करना

int action = MotionEventCompat.getActionMasked(event);
int pointerIndex = MotionEventCompat.getActionIndex(event);
int pointerId = event.getPointerId(pointerIndex);

// ACTION_POINTER_DOWN/UP के लिए pointerIndex उपयोग करें
if (action == MotionEvent.ACTION_POINTER_DOWN) {
    float x = event.getX(pointerIndex);
    float y = event.getY(pointerIndex);
}

रिटर्न मान का महत्व

  • true: इवेंट खपत हुआ, पैरेंट को पास नहीं होगा, बाद के इवेंट्स (MOVE, UP) इसी व्यू को मिलेंगे
  • false: इवेंट खपत नहीं हुआ, पैरेंट को पास होगा, बाद के इवेंट्स नहीं मिलेंगे
  • ACTION_DOWN के लिए true लौटाना आवश्यक है यदि आप MOVE/UP प्राप्त करना चाहते हैं

कस्टम व्यू में onTouchEvent ओवरराइड करना

public class CustomView extends View {
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = MotionEventCompat.getActionMasked(event);
        
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                // हैंडल डाउन
                return true;
            case MotionEvent.ACTION_MOVE:
                // हैंडल मूव
                return true;
            case MotionEvent.ACTION_UP:
                // हैंडल अप
                return true;
            case MotionEvent.ACTION_CANCEL:
                // क्लीनअप
                return true;
        }
        return super.onTouchEvent(event);
    }
}

GestureDetector उपयोग करना (उच्च-स्तरीय)

GestureDetector gestureDetector = new GestureDetector(this, 
    new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onDown(MotionEvent e) {
            return true; // आवश्यक: अन्य जेस्चर्स के लिए true लौटाएं
        }
        
        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            // सिंगल टैप
            return true;
        }
        
        @Override
        public void onLongPress(MotionEvent e) {
            // लॉन्ग प्रेस
        }
        
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY) {
            // स्वाइप/फ्लिंग
            return true;
        }
    });

// OnTouchListener में delegate करें
view.setOnTouchListener((v, event) -> gestureDetector.onTouchEvent(event));

चरण 4: टेस्ट करें

  1. ऐप चलाएं
  2. नीले बॉक्स पर टच करें और दबाए रखें
  3. टोस्ट "ACTION_DOWN: टच शुरू हुआ" दिखेगा
  4. बॉक्स हरा हो जाएगा
  5. उंगली उठाने पर कोई टोस्ट नहीं (क्योंकि हमने false लौटाया)

एंड्रॉइड में एक्शन डाउन इवेंट का उपयोग कैसे करें?

  1. एंड्रॉइड एप्लिकेशन में फायरबेस मैसेजिंग का उपयोग कैसे करें? एंड्रॉइड एप्लिकेशन में फायरबेस मैसेजिंग का उपयोग कैसे करें?

    एंड्रॉइड में फायरबेस क्लाउड मैसेजिंग (FCM) सेटअप यह गाइड एक आधुनिक एंड्रॉइड ऐप (Kotlin/Java) में FCM को एंड-टू-एंड कवर करता है: निर्भरताएं, मैनिफेस्ट, टोकन हैंडलिंग, फोरग्राउंड/बैकग्राउंड संदेश, और नोटिफिकेशन चैनल (API 26+) 1. निर्भरताएं (build.gradle.kts / .gradle) dependencies { // Firebase B

  1. Android Toolbar में SearchView का उपयोग कैसे करें? Android Toolbar में SearchView का उपयोग कैसे करें?

    Android Toolbar/ActionBar में SearchView जोड़कर ListView फ़िल्टर करना टूलबार में सर्च आइकन जोड़कर ListView डेटा को रियल-टाइम फ़िल्टर करने का पूरा उदाहरण। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट में Toolbar और ListView res/layout/activity_main.xml: <?xml ve

  1. एंड्रॉइड में XMLPullParser से XML पार्स कैसे करें? एंड्रॉइड में XMLPullParser से XML पार्स कैसे करें?

    एंड्रॉइड में XMLPullParser का उपयोग करके XML डेटा पार्स करना XMLPullParser एंड्रॉइड में XML प्रोसेसिंग के लिए एक हल्का, कुशल और लो-मेमोरी पार्सर है। यह पुल मॉडल पर काम करता है — यानी आप पार्सर से अगला इवेंट मांगते हैं, बजाय इसके कि पार्सर आपको कॉलबैक दे (जैसे SAX)। यह बड़े XML फाइल्स के लिए आदर्श है