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

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

ইমার্সিভ মোড (Immersive Mode): সিস্টেম নেভিগেশন বার এবং স্ট্যাটাস বার হাইড করা

গুরুত্বপূর্ণ দ্রষ্টব্য: আধুনিক অ্যান্ড্রয়েড ভার্সনগুলিতে (Android 4.4 KitKat+) "হোম", "ব্যাক", "রিসেন্ট" বাটনগুলো পুরোপুরি ডিজেবল করা সম্ভব নয় কারণ এগুলো সিস্টেম লেভেলের UI। তবে ইমার্সিভ মোড (Immersive Mode) ব্যবহার করে এগুলো আটোমেটিক্যালি হাইড করা এবং ব্যবহারকারীর টাচ দিলে আবার দেখানো সম্ভব। এই টিউটোরিয়ালে সেই পদ্ধতিটি দেখানো হয়েছে।

প্রয়োজনীয় ধাপসমূহ

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

Android Studio-তে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (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"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="ইমার্সিভ মোড: হোম ও সিস্টেম বাটন হাইড"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

ধাপ ৩: MainActivity.java - ইমার্সিভ মোড ইমপ্লিমেন্টেশন

package com.example.immersivemode;

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // onCreate-এ hideNavigationBar() কল করবেন না, onWindowFocusChanged-এ করুন
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideNavigationBar();
        }
    }

    private void hideNavigationBar() {
        View decorView = getWindow().getDecorView();
        
        // ইমার্সিভ স্টিকি ফ্ল্যাগস - ব্যবহারকারী স্বাইপ করলে বারগুলো দেখাবে, আবার হাইড করবে
        int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;

        decorView.setSystemUiVisibility(uiOptions);
    }
}

মূল সিস্টেম UI ফ্ল্যাগগুলো ব্যাখ্যা

ফ্ল্যাগ কার্য
SYSTEM_UI_FLAG_IMMERSIVE_STICKY স্টিকি ইমার্সিভ মোড - ব্যবহারকারী স্বাইপ করলে বার দেখাবে, কিছুক্ষণ পর আবার হাইড করবে
SYSTEM_UI_FLAG_HIDE_NAVIGATION নেভিগেশন বার (হোম, ব্যাক, রিসেন্ট) হাইড করে
SYSTEM_UI_FLAG_FULLSCREEN স্ট্যাটাস বার হাইড করে
SYSTEM_UI_FLAG_LAYOUT_STABLE লেআউট স্থির রাখে, বার হাইড/শো হলে কন্টেন্ট শিফট হয় না
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION নেভিগেশন বার হাইড থাকাকালিন লেআউট ফুলস্ক্রিন হিসেবে গণ্য
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN স্ট্যাটাস বার হাইড থাকাকালিন লেআউট ফুলস্ক্রিন হিসেবে গণ্য

উন্নত ইমপ্লিমেন্টেশন (Kotlin + WindowInsets API - API 30+)

আধুনিক অ্যান্ড্রয়েডে (API 30+/Android 11+) WindowInsetsController API ব্যবহার করা উচিত:

// Kotlin উদাহরণ
private fun hideSystemBars() {
    val windowInsetsController = window.insetsController
    if (windowInsetsController != null) {
        windowInsetsController.hide(WindowInsets.Type.systemBars())
        windowInsetsController.systemBarsBehavior = 
            WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
    }
}

// Activity-তে
override fun onResume() {
    super.onResume()
    hideSystemBars()
}

ধাপ ৪: ম্যানিফেস্ট ফাইল

সাধারণ কনফিগারেশন। কোনোพิশেষ পারমিশন দরকার নেই।

সীমাবদ্ধতা এবং সতর্কতা

  • নहीं করা যাবে: হোম বাটন পুরোপুরি ডিজেবল করা (সিকিউরিটির কারণে)
  • কিὸস মোড (Kiosk Mode): যদি অ্যাপটি কি৸স মোডে চালাতে চান, তবে DevicePolicyManager এবং setLockTaskPackages() ব্যবহার করুন
  • onWindowFocusChanged: সবসময় এই মেথডে UI ফ্ল্যাগ সেট করুন, কারণ সিস্টেম বার আবার দেখানোর পর ফোকাস ফিরলে পুনরায় হাইড করতে হয়

ফলাফল

অ্যাপ্লিকেশন চালু হলে স্ট্যাটাস বার এবং নেভিগেশন বার হাইড থাকবে। স্ক্রিনের প্রান্ত থেকে স্বাইপ করলে বারগুলো দৃশ্যমান হবে, কিছুক্ষণ পর আবার হাইড হয়ে যাবে।

অ্যান্ড্রয়েডে হোম এবং সিস্টেম বাটনগুলো ডিজেবল/হাইড করার পদ্ধতি
  1. উইন্ডোজ ৭, ৮ এবং ১০-এ এরর על बीপিং ডিজেবল করার পদ্ধতি

  2. Android Visibility Listeners মাস্টার করুন: ভিউ দৃশ্যমানতা ট্র্যাক করার পদ্ধতি ও কারণ

  3. Android System WebView মাস্টার করুন: ইनेবল/ডিসেবল করার ধাপে ধাপে গাইড (২০২৪ আপডেট)

  4. অ্যান্ড্রয়েডে অটোকরেক্ট অফ করার ধাপে ধাপে গাইড