অ্যান্ড্রয়েড স্টুডিওতে Java + XML সহ কাস্টম এক্সিট ডায়ালগ তৈরি করুন
হ্যালো! এখানে আপনার শেয়ার করা ইমেজের মতো একটি সুন্দর এক্সিট কনফার্মেশন ডায়ালগের সম্পূর্ণ গাইড। এটি AlertDialog-এর পরিবর্তে Dialog ক্লাস ব্যবহার করে তৈরি, যাতে XML দিয়ে পুরো ডিজাইন কন্ট্রোল করা যায়।
ধাপ ১: XML লেআউট ফাইল তৈরি করুন
res/layout ফোল্ডারে নতুন ফাইল তৈরি করুন: dialog_exit.xml। নিচের কোডটি পেস্ট করুন।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp"
android:background="@drawable/dialog_background"
android:gravity="center">
<!-- আইকন (দরজার মতো) -->
<ImageView
android:id="@+id/iv_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_exit_door"
android:layout_marginBottom="16dp"
android:contentDescription="Exit Icon" />
<!-- টাইটেল টেক্সট -->
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="অ্যাপ থেকে বের হতে চান?"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@android:color/black"
android:gravity="center"
android:layout_marginBottom="8dp" />
<!-- মেসেজ টেক্সট -->
<TextView
android:id="@+id/tv_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="আপনি কি নিশ্চিত?"
android:textSize="14sp"
android:textColor="@android:color/darker_gray"
android:gravity="center"
android:layout_marginBottom="24dp" />
<!-- বাটনগুলো (হরিজন্টাল লেআউট) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:weightSum="2">
<!-- না বাটন (সবুজ) -->
<Button
android:id="@+id/btn_no"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:text="না"
android:textColor="@android:color/white"
android:background="@drawable/btn_no_background"
android:layout_marginEnd="8dp" />
<!-- হ্যাঁ বাটন (লাল) -->
<Button
android:id="@+id/btn_yes"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:text="হ্যাঁ"
android:textColor="@android:color/white"
android:background="@drawable/btn_yes_background"
android:layout_marginStart="8dp" />
</LinearLayout>
</LinearLayout>
ধাপ ২: Drawable রিসোর্স তৈরি করুন
res/drawable ফোল্ডারে নিচের ফাইলগুলো তৈরি করুন।
dialog_background.xml (রাউন্ডেড ব্যাকগ্রাউন্ড)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white" />
<corners android:radius="16dp" />
<stroke android:width="1dp" android:color="@android:color/darker_gray" />
</shape>
btn_no_background.xml (সবুজ বাটন)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/holo_green_light" />
<corners android:radius="8dp" />
</shape>
btn_yes_background.xml (লাল বাটন)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/holo_red_light" />
<corners android:radius="8dp" />
</shape>
টিপ: আইকনের জন্য ic_exit_door.png ডাউনলোড করে drawable-এ রাখুন। অথবা ডিফল্ট ব্যবহার করুন: android:src="@android:drawable/ic_menu_close_clear_cancel"।
ধাপ ৩: Java কোড (MainActivity.java)
আপনার Activity-তে এই কোড অ্যাড করুন। ব্যাক বাটন প্রেস করলে ডায়ালগ দেখাবে।
package com.example.yourapp; // আপনার প্যাকেজ নাম
import androidx.appcompat.app.AppCompatActivity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // আপনার মেইন লেআউট
}
// হার্ডওয়্যার ব্যাক বাটন প্রেস করলে ডায়ালগ দেখানো
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
showCustomExitDialog();
return true;
}
return super.onKeyDown(keyCode, event);
}
// কাস্টম এক্সিট ডায়ালগ ফাংশন
private void showCustomExitDialog() {
// Dialog তৈরি করুন
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // টাইটেল বার লুকান
dialog.setContentView(R.layout.dialog_exit); // XML লেআউট সেট করুন
dialog.setCancelable(false); // বাইরে ক্লিক করলে বন্ধ হবে না
// উইন্ডো সাইজ সেট করুন (80% স্ক্রিন)
dialog.getWindow().setLayout((int) (getResources().getDisplayMetrics().widthPixels * 0.85),
Window.LayoutParams.WRAP_CONTENT);
// ভিউগুলো খুঁজে বের করুন
ImageView ivIcon = dialog.findViewById(R.id.iv_icon);
TextView tvTitle = dialog.findViewById(R.id.tv_title);
TextView tvMessage = dialog.findViewById(R.id.tv_message);
Button btnNo = dialog.findViewById(R.id.btn_no);
Button btnYes = dialog.findViewById(R.id.btn_yes);
// টেক্সট সেট করুন (যদি চান, XML-এর পরিবর্তে ডায়নামিক)
tvTitle.setText("অ্যাপ থেকে বের হতে চান?");
tvMessage.setText("আপনি কি নিশ্চিত?");
// না বাটন ক্লিক
btnNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "সেশন চালিয়ে যান!", Toast.LENGTH_SHORT).show();
}
});
// হ্যাঁ বাটন ক্লিক
btnYes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
finish(); // অ্যাপ বন্ধ করুন
// অথবা Toast.makeText(MainActivity.this, "ধন্যবাদ!", Toast.LENGTH_SHORT).show();
}
});
// ডায়ালগ দেখান
dialog.show();
}
}
ধাপ ৪: অতিরিক্ত টিপস
- পারমিশন/ইমপোর্ট:
android.app.Dialogimport করুন। - থিম ম্যাচ: styles.xml-এ
<item name="android:windowBackground">@android:color/transparent</item>যোগ করুন। - টেস্ট: অ্যাপ রান করে ব্যাক বাটন চাপুন।
- কাস্টমাইজ: বাংলা ফন্টের জন্য
android:fontFamily="sans-serif"যোগ করুন।
যদি সমস্যা হয়: আরও পরিবর্তন চান (যেমন অ্যানিমেশন বা Kotlin), তাহলে বলুন! 😊

Comments
Post a Comment