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

অ্যান্ড্রয়েডে শুধু একটি এক্টিভিটির জন্য থিম প্রয়োগ করার পদ্ধতি

এই টিউটোরিয়ালে আমরা শিখব কীভাবে AndroidManifest.xml-এ নির্দিষ্ট এক্টিভিটির জন্য আলাদা থিম সেট করা যায়, পুরো অ্যাপ্লিকেশনকে প্রভাবিত না করে।

প্রয়োজনীয় ধাপগুলো

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

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল তৈরি করুন

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="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

ধাপ ৩: মেইন এক্টিভিটি তৈরি করুন

src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:

package app.com.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

ধাপ ৪: ম্যানিফেস্টে এক্টিভিটি-লেভেল থিম সেট করুন

AndroidManifest.xml ফাইলে <activity> ট্যাগে android:theme অ্যাট্রিবিউট যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Dialog.MinWidth">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

বিভিন্ন বিল্ট-ইন থিম অপশন

থিমব্যাখ্যা
@style/Theme.AppCompat.Dialogস্ট্যান্ডার্ড ডায়লগ থিম
@style/Theme.AppCompat.Dialog.MinWidthন্যূনতম প্রস্থের ডায়লগ
@style/Theme.AppCompat.Dialog.Alertআলার্ট ডায়লগ স্টাইল
@style/Theme.AppCompat.Light.Dialogহালকা ব্যাকগ্রাউন্ড ডায়লগ
@style/Theme.AppCompat.NoActionBarএকশনবার ছাড়া ফুলস্ক্রিন
@style/Theme.AppCompat.Translucentট্রান্সপারেন্ট ব্যাকগ্রাউন্ড
@android:style/Theme.Translucent.NoTitleBarসিস্টেম ট্রান্সলুসেন্ট থিম

কাস্টম থিম তৈরি করা (styles.xml-এ)

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
    <!-- কাস্টম এক্টিভিটি থিম -->
    <style name="CustomActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/white</item>
        <item name="android:windowIsTranslucent">false</item>
    </style>
    
    <!-- ডায়লগ থিম -->
    <style name="CustomDialogTheme" parent="Theme.AppCompat.Dialog">
        <item name="android:windowMinWidthMajor">90%</item>
        <item name="android:windowMinWidthMinor">90%</item>
    </style>
</resources>

প্রোগ্রাম্যাটিক্যালি থিম সেট করা

onCreate()-এ setContentView()-এর আগে কল করুন:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.CustomActivityTheme); // অবশ্যই setContentView()-এর আগে
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

থিম ইনহেরিটেন্স ও ওভাররাইড

  • Application থিম → সব এক্টিভিটির ডিফল্ট
  • Activity থিম (Manifest) → Application থিম ওভাররাইড করে
  • Programmatic setTheme() → Manifest থিম ওভাররাইড করে
  • View:android:theme (XML) → এক্টিভিটি থিম ওভাররাইড করে (API 21+)

Material Components থিম (সুপারিশ করা)

<style name="CustomActivityTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
    <item name="colorOnPrimary">@color/white</item>
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorOnSecondary">@color/black</item>
</style>

সারাংশ

Manifest-এ <activity android:theme="@style/YourTheme"> ব্যবহার করুন নির্দিষ্ট এক্টিভিটির জন্য থিম সেট করতে। কাস্টম থিম styles.xml-এ সংজ্ঞায়িত করুন। setTheme() অবশ্যই setContentView()-এর আগে কল করতে হবে।

  1. অ্যান্ড্রয়েড অ্যাপে TextToSpeech তৈরি করার পদ্ধতি

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

  3. অ্যান্ড্রয়েডে ফ্র্যাগমেন্ট থেকে এক্টিভিটি মেথড কল করা

  4. অ্যান্ড্রয়েডে গুগলকে অ্যাপ এক্টিভিটি রেকর্ড করার থেকে রোধ করা