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

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে অরিয়েন্টেশন চেঞ্জ ডিটেক্ট করা

ওভারভিউ

এই উদাহরণটি দেখায় কিভাবে onConfigurationChanged() ওভাররাইড করে ডিভাইসের অরিয়েন্টেশন পরিবর্তন (পোর্ট্রেট ↔ ল্যান্ডস্কেপ) সনাক্ত করা যায়।

পূর্বশর্ত

  • অ্যান্ড্রয়েড স্টুডিও (কোটলিন)
  • Configuration ক্লাস সম্পর্কে ধারণা

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

File → New Project → Empty Activity → Language: Kotlin।

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello World!"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

ধাপ ৩: MainActivity.kt

package com.example.orientationchange

import android.content.res.Configuration
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)

        when (newConfig.orientation) {
            Configuration.ORIENTATION_LANDSCAPE -> {
                Toast.makeText(baseContext, "Landscape Mode", Toast.LENGTH_SHORT).show()
            }
            Configuration.ORIENTATION_PORTRAIT -> {
                Toast.makeText(baseContext, "Portrait Mode", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

ধাপ ৪: AndroidManifest.xml - গুরুত্বপূর্ণ কনফিগারেশন

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.orientationchange">

    <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:configChanges="orientation|screenSize|screenLayout|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

গুরুত্বপূর্ণ নোট

AndroidManifest.xml-এ android:configChanges অ্যাট্রিবিউট যোগ করা আবশ্যক। না করলে অরিয়েন্টেশন পরিবর্তনে এক্টিভিটি রিস্টার্ট হবে (onCreate আবার কল হবে) এবং onConfigurationChanged কল হবে না।

configChanges মানসমূহ

  • orientation - স্ক্রিন অরিয়েন্টেশন পরিবর্তন
  • screenSize - স্ক্রিন আকার পরিবর্তন (API 13+)
  • screenLayout - স্ক্রিন লেআউট পরিবর্তন
  • keyboardHidden - কীবোর্ড ভিজিবিলিটি পরিবর্তন
  • locale - ভাষা পরিবর্তন
  • uiMode - নাইট মোড/কার মোড পরিবর্তন

চলান ও পরীক্ষা

  1. অ্যাপ চালান (পোর্ট্রেট মোডে থাকবে)।
  2. ডিভাইস ঘুরিয়ে ল্যান্ডস্কেপ করুন → "Landscape Mode" টোস্ট দেখাবে।
  3. আবার পোর্ট্রেট করুন → "Portrait Mode" টোস্ট দেখাবে।
  4. এক্টিভিটি রিস্টার্ট হবে না (র‍্যান্ডম নম্বর বা ইনপুট ফিল্ড বজায় থাকবে)।

সতর্কতা ও সেরা অনুশীলন

  • configChanges ব্যবহার করলে লেআউট রি-ইনফ্লেট হবে না। ম্যানুয়ালি 뷰 আপডেট করতে হলে।
  • আধুনিক অ্যাপে ViewBinding/DataBinding + ViewModel ব্যবহার করলে রিস্টার্ট সমস্যা কম।
  • জটিল লেআউটের জন্য আলাদা ল্যান্ডস্কেপ লেআউট (layout-land) তৈরি করুন।
  1. অ্যান্ড্রয়েডে টোস্টের অবস্থান পরিবর্তন করার উপায়

  2. Android-এ অরিয়েন্টেশন চেঞ্জ (Orientation Change) হ্যান্ডল করার উপায়

  3. অ্যান্ড্রয়েডে বাটন ক্লিক করলে স্ক্রিন অরিয়েন্টেশন পরিবর্তন করার পদ্ধতি

  4. অ্যান্ড্রয়েডে অরিয়েন্টেশন চেঞ্জ ডিজেবল করার উপায়