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

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

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

यह ट्यूटोरियल दिखाता है कि MotionEvent.ACTION_UP का उपयोग करके टच रिलीज (उंगली उठाने पर) कैसे डिटेक्ट करें। यह क्लिक/टैप पहचानने के लिए उपयोगी है।

चरण 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="#FF9800"
        android:textColor="#FFFFFF"
        android:text="यहां टच करें और छोड़ें\n(ACTION_UP)"
        android:layout_marginTop="30dp"/>

</LinearLayout>

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

package com.example.actionupdemo;

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 UP टेस्ट\nटच करें और छोड़ें");

        touchView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = MotionEventCompat.getActionMasked(event);

                if (action == MotionEvent.ACTION_UP) {
                    // उंगली उठी - टैप/क्लिक पूरा हुआ
                    Toast.makeText(MainActivity.this, 
                        "ACTION_UP: टच रिलीज हुआ", Toast.LENGTH_SHORT).show();
                    
                    // विजुअल फीडबैक
                    v.setBackgroundColor(0xFF2196F3); // नीला
                    ((TextView) v).setText("छोड़ा गया!\nACTION_UP");
                    return true;
                }
                
                // ACTION_DOWN के लिए true लौटाएं ताकि UP मिले
                if (action == MotionEvent.ACTION_DOWN) {
                    v.setBackgroundColor(0xFF4CAF50); // हरा
                    return true;
                }
                
                return false;
            }
        });
    }
}

टच इवेंट सीक्वेंस

// सामान्य टैप:
ACTION_DOWN  →  (ACTION_MOVE x N)  →  ACTION_UP

// लॉन्ग प्रेस:
ACTION_DOWN  →  (ACTION_MOVE x N)  →  ACTION_UP  (लंबे समय बाद)

// कैंसल (स्क्रॉल इंटरसेप्ट, आदि):
ACTION_DOWN  →  (ACTION_MOVE x N)  →  ACTION_CANCEL

// मल्टी-टच:
ACTION_DOWN           (पहली उंगली)
ACTION_POINTER_DOWN   (दूसरी उंगली)
ACTION_MOVE           (दोनों)
ACTION_POINTER_UP     (दूसरी उंगली उठी)
ACTION_MOVE           (पहली उंगली)
ACTION_UP             (पहली उंगली उठी)

ACTION_UP vs ACTION_CANCEL

क्लिक डिटेक्शन पैटर्न (मैन्युअल)

private static final int MAX_CLICK_DURATION = 200; // ms
private static final float MAX_CLICK_DISTANCE = 20; // dp
private long downTime;
private float downX, downY;

@Override
public boolean onTouch(View v, MotionEvent event) {
    int action = MotionEventCompat.getActionMasked(event);
    float x = event.getX();
    float y = event.getY();
    
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            downTime = System.currentTimeMillis();
            downX = x; downY = y;
            return true;
            
        case MotionEvent.ACTION_UP:
            long duration = System.currentTimeMillis() - downTime;
            float distance = (float) Math.hypot(x - downX, y - downY);
            
            if (duration < MAX_CLICK_DURATION && distance < dpToPx(MAX_CLICK_DISTANCE)) {
                // वैध क्लिक
                performClickAction(v);
            }
            return true;
            
        case MotionEvent.ACTION_CANCEL:
            return true;
    }
    return false;
}

OnClickListener vs OnTouchListener

इवेंटकब होता हैहैंडलिंग
ACTION_UPसामान्य टच समाप्तिक्लिक/एक्शन पूरा करें
ACTION_CANCELसिस्टम द्वारा इंटरसेप्ट (स्क्रॉल, पैरेंट व्यू)क्लीनअप करें, एक्शन निष्पादित न करें

सर्वोत्तम अभ्यास

  • सरल क्लिक्स के लिए OnClickListener उपयोग करें
  • कस्टम जेस्चर्स, ड्रैगिंग, ड्रॉइंग के लिए OnTouchListener उपयोग करें
  • GestureDetector जेस्चर्स के लिए सर्वोत्तम संतुलन प्रदान करता है
  • ACTION_DOWN पर true लौटाना न भूलें

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

  1. ऐप चलाएं
  2. नारंगी बॉक्स पर टच करें और तुरंत छोड़ें
  3. टोस्ट "ACTION_UP: टच रिलीज हुआ" दिखेगा
  4. बॉक्स नीला हो जाएगा
  5. दबाए रखने पर हरा, छोड़ने पर नीला

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

  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 फाइल्स के लिए आदर्श है

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विशेषताOnClickListenerOnTouchListener
सरलताबहुत सरलजटिल
क्लिक हैंडलिंगस्वचालित (डाउन+अप)मैन्युअल
लॉन्ग क्लिकOnLongClickListenerमैन्युअल टाइमर
ड्रैग/स्वाइपनहींहां
मल्टी-टचनहींहां
कस्टम विजुअल फीडबैकसीमितपूर्ण नियंत्रण