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

অ্যান্ড্রয়েডে ফুল স্ক্রিন কাস্টম ডায়ালগ কীভাবে তৈরি করবেন?

ফুল স্ক্রিন কাস্টম ডায়ালগ

AlertDialog.Builder, কাস্টম লেআউট, এবং WindowManager ব্যবহার করে স্ক্রিন পূর্ণ আকারের কাস্টম ডায়ালগ তৈরি করা যায়।

উদাহরণ

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

ধাপ ২: মেইন লেআউট (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:gravity="center"
    android:orientation="vertical">
    <Button
        android:id="@+id/customDialog"
        android:text="Full Screen Custom Dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

ধাপ ৩: কাস্টম ডায়ালগ লেআউট (res/layout/customview.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="16dp">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Success"
            android:textAlignment="center"
            android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla eu erat tincidunt lacus fermentum rutrum."
            android:textAlignment="center"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
        <Button
            android:id="@+id/buttonOk"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dp"
            android:background="@color/colorPrimary"
            android:text="Ok"
            android:textColor="#FFF" />
    </LinearLayout>
</LinearLayout>

ধাপ ৪: কাস্টম থিম (res/values/styles.xml)

<style name="CustomAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowBackground">@drawable/popup_background</item>
    <item name="android:windowMinWidthMajor">100%</item>
    <item name="android:windowMinWidthMinor">100%</item>
    <item name="android:windowIsFloating">false</item>
</style>

ধাপ ৫: ড্রোয়েবল ব্যাকগ্রাউন্ড (res/drawable/popup_background.xml)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="6dp" />
</shape>

ধাপ ৬: জাভা কোড (src/MainActivity.java)

package com.example.andy.myapplication;

import android.app.Activity;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        findViewById(R.id.customDialog).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // স্ক্রিন আকার পান
                Rect displayRectangle = new Rect();
                Window window = MainActivity.this.getWindow();
                window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);

                AlertDialog.Builder builder = new AlertDialog.Builder(
                    MainActivity.this, R.style.CustomAlertDialog
                );

                ViewGroup viewGroup = findViewById(android.R.id.content);
                View dialogView = LayoutInflater.from(v.getContext())
                    .inflate(R.layout.customview, viewGroup, false);

                // ফুল স্ক্রিন আকার সেট করুন
                dialogView.setMinimumWidth((int)(displayRectangle.width() * 1f));
                dialogView.setMinimumHeight((int)(displayRectangle.height() * 1f));

                builder.setView(dialogView);
                final AlertDialog alertDialog = builder.create();

                // OK বাটনে ডিসমিস
                Button buttonOk = dialogView.findViewById(R.id.buttonOk);
                buttonOk.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        alertDialog.dismiss();
                    }
                });

                alertDialog.show();
            }
        });
    }
}

ফুল স্ক্রিন ডায়ালগর মূল কী পয়েন্ট

// ১. স্ক্রিন ডাইমেনশন পান
Rect displayRectangle = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(displayRectangle);

// ২. ডায়ালগ ভিউর মিনিমাম আকার সেট করুন
dialogView.setMinimumWidth(displayRectangle.width());
dialogView.setMinimumHeight(displayRectangle.height());

// ৩. থিমে উইন্ডো প্রপার্টি
<item name="android:windowIsFloating">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@android:color/transparent</item>

আধুনিক বিকল্প: BottomSheetDialogFragment

// ModalBottomSheetLayout ব্যবহার করে (Material Components)
BottomSheetDialog dialog = new BottomSheetDialog(this, R.style.FullScreenBottomSheet);
dialog.setContentView(R.layout.customview);
dialog.show();

// styles.xml
<style name="FullScreenBottomSheet" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>

সেরা অনুশীলন

  • DialogFragment ব্যবহার করুন (লাইফসাইকেল সেফ)
  • WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS ব্যবহার করুন নিচের নেভবার কভার করার জন্য
  • setCanceledOnTouchOutside(false) দিয়ে বাইরের ক্লিক বন্ধ করুন
  • কীবোর্ড হ্যান্ডলিং: window.setSoftInputMode(...)
  1. অ্যান্ড্রয়েডে কাস্টম রিংটোন বা অ্যালার্ম সাউন্ড বাজানোর উপায়

  2. অ্যান্ড্রয়েডে ডায়লগের অবস্থান (Position) স্ক্রিনে পরিবর্তন করা

  3. অ্যান্ড্রয়েডে অ্যালার্ট ডায়ালগকে স্ক্রিনের ৫০% আকারে সেট করা

  4. Android-এ GridLayout স্ক্রিন সাইজে ফিট করা