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

Kotlin-এ Android-এ Home এবং সিস্টেম বাটন নিষিদ্ধ করা

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 ক্লিক করুন। অ্যাপটি ফুলস্ক্রিনে চলে যাবে, নেভিগেশন বার লুকিয়ে থাকবে। স্ক্রিনের প্রান্ত থেকে স্বাইপ করলে বার দেখাবে।

Kotlin-এ Android-এ Home এবং সিস্টেম বাটন নিষিদ্ধ করা

  1. অ্যান্ড্রয়েডে ড্র্যাগ অ্যান্ড ড্রপ ইমপ্লিমেন্টেশন

  2. অ্যান্ড্রয়েডে হোম এবং সিস্টেম বাটনগুলো ডিজেবল/হাইড করার পদ্ধতি

  3. Kotlin ব্যবহার করে Android-এ ডান-বাম সুইপ জেসচার হ্যান্ডলিং

  4. অ্যান্ড্রয়েডে কোটলিন ব্যবহার করে GridView স্ক্রোলিং নিষ্ক্রিয় করার উপায়