Kotlin-এ Android-এ নেভিগেশন বার এবং সিস্টেম বাটন লুকানো (Immersive Mode)
এই উদাহরণটি দেখায় কিভাবে SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_FULLSCREEN ইত্যাদি ফ্ল্যাগ ব্যবহার করে Home, Back, Recent Apps বাটনসহ নেভিগেশন বার লুকানো যায়। এটি "Immersive Mode" বলা হয়।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান, ভাষা Kotlin বেছে নিয়ে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট XML (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:padding="8dp"
android:text="Tutorials Point"
android:textColor="@color/colorPrimaryDark"
android:textSize="48sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Disabled Home and Other System buttons"
android:textAlignment="center"
android:textColor="@android:color/background_dark"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
ধাপ ৩: MainActivity.kt
package app.com.q1
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) {
hideNavigationBar()
}
}
private fun hideNavigationBar() {
val decorView: View = window.decorView
val uiOptions = (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) // স্টিকি ইমার্সিভ মোড
// টাইমার দিয়ে বারবার সেট করুন (সিস্টেম UI রি-অপিয়ার হলে)
val timer = Timer()
val task = object : TimerTask() {
override fun run() {
runOnUiThread { decorView.systemUiVisibility = uiOptions }
}
}
timer.scheduleAtFixedRate(task, 1, 2) // প্রতি ২ মিলিসেকেন্ডে রিফ্রেশ
}
}
ধাপ ৪: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.q1">
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
গুরুত্বপূর্ণ নোট
- SYSTEM_UI_FLAG_IMMERSIVE_STICKY (API 19+) যোগ করলে ব্যবহারকারী স্বাইপ করলে নেভিগেশন বার সাময়িকভাবে দেখাবে এবং আবার লুকিয়ে যাবে।
- হোম বাটন সম্পূর্ণরূপে নিষিদ্ধ করা সম্ভব নয় (সিকিউরিটি কারণে), তবে ইমার্সিভ মোডে এটি লুকানো যায়।
- কিয়osk মোড বা ডেডিকেটেড ডিভাইসের জন্য
DevicePolicyManagerবাlockTaskModeব্যবহার করুন।
অ্যাপটি চালান
ডিভাইস সংযুক্ত করে Run ক্লিক করুন। অ্যাপটি ফুলস্ক্রিনে চলে যাবে, নেভিগেশন বার লুকিয়ে থাকবে। স্ক্রিনের প্রান্ত থেকে স্বাইপ করলে বার দেখাবে।
