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

Android में Toast.LENGTH_LONG से अधिक अवधि के लिए टोस्ट कैसे दिखाएं?

Android में कस्टम ड्यूरेशन टोस्ट दिखाना

Android के बिल्ट-इन टोस्ट केवल दो अवधि सपोर्ट करते हैं: SHORT (2 सेकंड) और LONG (3.5 सेकंड)। यह ट्यूटोरियल दिखाता है कि कैसे CountDownTimer का उपयोग करके मनचाही अवधि का टोस्ट दिखाया जाए।

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

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट में बटन

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="हैलो वर्ल्ड!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <androidx.appcompat.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:onClick="showToast"
        android:text="लंबा टोस्ट दिखाएं" />
</androidx.constraintlayout.widget.ConstraintLayout>

चरण 3: CountDownTimer के साथ कस्टम टोस्ट

src/MainActivity.java:

package com.app.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Toast mToastToShow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showToast(View view) {
        int toastDurationInMilliSeconds = 10000; // 10 सेकंड
        
        mToastToShow = Toast.makeText(this, "हैलो वर्ल्ड, मैं एक लंबा टोस्ट हूँ।", Toast.LENGTH_LONG);
        
        CountDownTimer toastCountDown = new CountDownTimer(toastDurationInMilliSeconds, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                mToastToShow.show(); // हर सेकंड पुनः दिखाएं
            }

            @Override
            public void onFinish() {
                mToastToShow.cancel();
            }
        };
        
        mToastToShow.show();
        toastCountDown.start();
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mToastToShow != null) {
            mToastToShow.cancel();
        }
    }
}

बेहतर दृष्टिकोण: कस्टम टोस्ट क्लास

public class LongToast {
    private static Toast toast;
    private static CountDownTimer timer;

    public static void show(Context context, String message, int durationMs) {
        cancel();
        
        toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
        timer = new CountDownTimer(durationMs, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                toast.show();
            }
            @Override
            public void onFinish() {
                toast.cancel();
            }
        };
        toast.show();
        timer.start();
    }

    public static void cancel() {
        if (timer != null) timer.cancel();
        if (toast != null) toast.cancel();
    }
}

// उपयोग:
// LongToast.show(this, "10 सेकंड के लिए संदेश", 10000);

आधुनिक विकल्प: Snackbar (अनुशंसित)

// Snackbar में कस्टम ड्यूरेशन सेट करें
Snackbar snackbar = Snackbar.make(view, "लंबा संदेश", Snackbar.LENGTH_INDEFINITE);
snackbar.setDuration(10000); // API 22+
snackbar.show();

Jetpack Compose में

var showToast by remember { mutableStateOf(false) }
LaunchedEffect(showToast) {
    if (showToast) {
        // Compose में कोई बिल्ट-इन टोस्ट नहीं, कस्टम ओवरले उपयोग करें
    }
}

चरण 4: मैनिफेस्ट

स्टैंडर्ड कॉन्फ़िगरेशन।

महत्वपूर्ण विचार

  • टोस्ट सिस्टम-वाइड होते हैं, ऐप-विशिष्ट नहीं
  • बहुत लंबे टोस्ट UX के लिए खराब होते हैं - Snackbar या डायलॉग प्राथमिकता दें
  • काउंटडाउन टाइमर को onDestroy() में कैंसिल करें लीक रोकने के लिए
  • Android 12+ में टोस्ट लेआउट बदल गया है - कस्टम व्यू प्रभावित हो सकते हैं

अनुशंसित विकल्प

कंपोनेंटउपयोग केसअधिकतम ड्यूरेशन
Toastसरल नोटिफिकेशन~3.5 सेकंड (LONG)
Snackbarएक्शन के साथ संदेशअनिश्चित (कस्टम सेटेबल)
Dialogमहत्वपूर्ण जानकारीयूजर डिसमिस तक
कस्टम व्यू/ओवरलेपूर्ण नियंत्रणअनिश्चित
  1. Facebook पर Android ऐप कैसे बनाएं? Facebook पर Android ऐप कैसे बनाएं?

    Facebook Developer Console पर ऐप बनाकर App ID प्राप्त करने की चरण-दर-चरण प्रक्रिया। चरण 1: Facebook Developer Console पर ऐप बनाएं developers.facebook.com पर जाएं My Apps → Create App चुनें ऐप नाम और ईमेल दर्ज करें Create App ID पर क्लिक करें चरण 2: Android Studio में SDK जोड़ें प्रोजेक्ट-लेवल bu

  1. Android डिवाइस पर Microsoft Teams इंस्टॉल करने के लिए चरण-दर-चरण गाइड Android डिवाइस पर Microsoft Teams इंस्टॉल करने के लिए चरण-दर-चरण गाइड

    जितना अप्रत्याशित और अनिश्चित कोविड-19 महामारी थी, यह अपने साथ हमारी कार्य संस्कृति में कई बदलाव लेकर आई। एक ऐसा बदलाव वर्क-फ्रॉम-होम घटना के बीच ऑनलाइन संचार टूल्स का उदय था। इसके परिणामस्वरूप Teams, Microsoft के प्रमुख ऑनलाइन संचार ऐप के लिए नई सदस्यताओं में भारी वृद्धि हुई। आंकड़ों के शौकीनों के

  1. एंड्रॉइड पर आउटलुक ईमेल सेट करें - त्वरित और आसान गाइड एंड्रॉइड पर आउटलुक ईमेल सेट करें - त्वरित और आसान गाइड

    आउटलुक दशकों से सबसे लोकप्रिय ईमेल प्रबंधन समाधानों में से एक रहा है और दुनिया भर के कई व्यक्तियों और व्यवसायों द्वारा उपयोग किया जाता है। जबकि यह आपके कंप्यूटर पर ईमेल एक्सेस करने के लिए आपका प्राथमिक उपकरण हो सकता है, यह निश्चित रूप से आपके स्मार्टफोन के बारे में बात करते समय समान नहीं है। लेकिन अ