কম্পিউটার টিউটোরিয়াল

Toast.LENGTH_LONG-এর চেয়ে বড় ডুরেশন দিয়ে Android Toast দেখাবেন কীভাবে?

CountDownTimer ব্যবহার করে কাস্টম টোস্ট ডুরেশন

স্ট্যান্ডার্ড Toast শুধু SHORT (২সেক) এবং LONG (৩.৫সেক) সাপোর্ট করে। এই টিউটোরিয়ালে CountDownTimer ব্যবহার করে যেকোনো ডুরেশনের টোস্ট দেখানো দেখানো হয়েছে।

ধাপ ১: প্রজেক্ট তৈরি করুন

Android Studio-তে নতুন প্রজেক্ট।

ধাপ ২: লেআউট (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="Hello World!"
        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="match_parent"
        android:onClick="showToast"/>
</androidx.constraintlayout.widget.ConstraintLayout>

ধাপ ৩: MainActivity.java - CountDownTimer পদ্ধতি

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; // ১০ সেকেন্ড
        
        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();
    }
}

ধাপ ৪: ম্যানিফেস্ট

সাধারণ কনফিগারেশন।

⚠️ এই পদ্ধতির সীমাবদ্ধতা

  • প্রতি সেকেন্ডে টোস্ট পুনরায় দেখানোর কারণে ফ্লিকার হয়
  • সিস্টেম টোস্ট কিউতে يذهبে, অন্য টোস্ট ব্লক করতে পারে
  • ব্যবহারকারী অভিজ্ঞতা ভালো নয়

উন্নত বিকল্প: Snackbar (Material Design)

import com.google.android.material.snackbar.Snackbar;

Snackbar.make(findViewById(android.R.id.content), "এটি একটি দীর্ঘ বার্তা", Snackbar.LENGTH_INDEFINITE)
    .setAction("বন্ধ করুন", v -> {})
    .setDuration(10000) // ১০ সেকেন্ড
    .show();

উন্নত বিকল্প ২: কাস্টম টোস্ট লেআউট

// res/layout/custom_toast.xml
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#CC000000"
    android:padding="16dp"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/toastText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:textSize="16sp"/>
</LinearLayout>

// জাভাতে
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast, null);
TextView text = layout.findViewById(R.id.toastText);
text.setText("কাস্টম টোস্ট বার্তা");

Toast toast = new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

উন্নত বিকল্প ৩: DialogFragment (সবচেয়ে linh hoạt)

public class LongToastDialog extends DialogFragment {
    private static final String ARG_MESSAGE = "message";
    private static final String ARG_DURATION = "duration";

    public static LongToastDialog newInstance(String message, int duration) {
        LongToastDialog fragment = new LongToastDialog();
        Bundle args = new Bundle();
        args.putString(ARG_MESSAGE, message);
        args.putInt(ARG_DURATION, duration);
        fragment.setArguments(args);
        return fragment;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        String message = getArguments().getString(ARG_MESSAGE);
        int duration = getArguments().getInt(ARG_DURATION);
        
        AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
        builder.setMessage(message)
               .setCancelable(true);
        
        AlertDialog dialog = builder.create();
        
        // অটো ডিসমিস
        new Handler(Looper.getMainLooper()).postDelayed(dialog::dismiss, duration);
        
        return dialog;
    }
}

// ব্যবহার
LongToastDialog.newInstance("দীর্ঘ বার্তা", 10000).show(getSupportFragmentManager(), "longToast");
  1. অ্যান্ড্রয়েড অ্যাপে TextToSpeech তৈরি করার পদ্ধতি

  2. Facebook-এ Android অ্যাপ তৈরি করার পদ্ধতি

  3. Android ডিভাইসে Microsoft Teams ইনস্টল ও সেট আপ করুন: ধাপে ধাপে গাইড

  4. Android-এ Outlook ইমেল সেটআপ করুন — দ্রুত ও সহজ গাইড