স্ট্যাটাস বার লুকান

এই পাঠ বর্ণনা করে কিভাবে Android এর বিভিন্ন সংস্করণে স্ট্যাটাস বার লুকাতে হয়। স্ট্যাটাস বার লুকিয়ে রাখা (এবং ঐচ্ছিকভাবে, নেভিগেশন বার) বিষয়বস্তুকে ডিসপ্লে স্পেস বেশি ব্যবহার করতে দেয়, যার ফলে ব্যবহারকারীর আরও নিমগ্ন অভিজ্ঞতা প্রদান করা হয়।

চিত্র 1 একটি দৃশ্যমান স্ট্যাটাস বার সহ একটি অ্যাপ দেখায়:

সিস্টেম বার

চিত্র 1. দৃশ্যমান স্ট্যাটাস বার।

চিত্র 2 একটি লুকানো স্ট্যাটাস বার সহ একটি অ্যাপ দেখায়। নোট করুন যে অ্যাকশন বারটিও লুকানো আছে। আপনি কখনই স্ট্যাটাস বার ছাড়া অ্যাকশন বার দেখাবেন না।

সিস্টেম বার

চিত্র 2. লুকানো স্ট্যাটাস বার।

অ্যান্ড্রয়েড 4.0 এবং নিম্নতর স্থিতি বার লুকান

আপনি WindowManager ফ্ল্যাগ সেট করে Android 4.0 (API লেভেল 14) এবং নিচের স্ট্যাটাস বার লুকাতে পারেন। আপনি এটি প্রোগ্রাম্যাটিকভাবে বা আপনার অ্যাপের ম্যানিফেস্ট ফাইলে একটি অ্যাক্টিভিটি থিম সেট করে করতে পারেন। আপনার অ্যাপের ম্যানিফেস্ট ফাইলে একটি অ্যাক্টিভিটি থিম সেট করা পছন্দের পদ্ধতি যদি আপনার অ্যাপে স্ট্যাটাস বার সবসময় লুকানো থাকে (যদিও কঠোরভাবে বলতে গেলে, আপনি চাইলে প্রোগ্রাম্যাটিকভাবে থিমটিকে ওভাররাইড করতে পারেন)। উদাহরণ স্বরূপ:

<application
    ...
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    ...
</application>

একটি কার্যকলাপ থিম ব্যবহার করার সুবিধাগুলি নিম্নরূপ:

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

বিকল্পভাবে, আপনি প্রোগ্রাম্যাটিকভাবে WindowManager পতাকা সেট করতে পারেন। ব্যবহারকারী আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সাথে সাথে এই পদ্ধতিটি স্ট্যাটাস বার লুকানো এবং দেখানো সহজ করে তোলে:

কোটলিন

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) {
            window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN)
        }
        setContentView(R.layout.activity_main)
    }
    ...
}

জাভা

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        setContentView(R.layout.activity_main);
    }
    ...
}

যখন আপনি WindowManager ফ্ল্যাগগুলি সেট করেন (একটি অ্যাক্টিভিটি থিমের মাধ্যমে বা প্রোগ্রামগতভাবে), পতাকাগুলি কার্যকর থাকে যতক্ষণ না আপনার অ্যাপ সেগুলি সাফ করে।

আপনি FLAG_FULLSCREEN সক্ষম করার সময় উপলব্ধ একই স্ক্রীন এলাকা ব্যবহার করতে আপনার কার্যকলাপ লেআউট সেট করতে FLAG_LAYOUT_IN_SCREEN ব্যবহার করতে পারেন। স্ট্যাটাস বার লুকিয়ে এবং দেখালে এটি আপনার সামগ্রীর আকার পরিবর্তন করা থেকে বাধা দেয়।

Android 4.1 এবং উচ্চতর সংস্করণে স্ট্যাটাস বার লুকান

আপনি setSystemUiVisibility() ব্যবহার করে Android 4.1 (API লেভেল 16) এবং উচ্চতর স্থিতি বার লুকাতে পারেন। setSystemUiVisibility() পৃথক ভিউ লেভেলে UI পতাকা সেট করে; এই সেটিংস উইন্ডো স্তরে একত্রিত করা হয়. UI পতাকা সেট করতে setSystemUiVisibility() ব্যবহার করা আপনাকে WindowManager ফ্ল্যাগগুলি ব্যবহার করার চেয়ে সিস্টেম বারগুলির উপর আরও দানাদার নিয়ন্ত্রণ দেয়। এই স্নিপেট স্ট্যাটাস বার লুকিয়ে রাখে:

কোটলিন

// Hide the status bar.
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
actionBar?.hide()

জাভা

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();

নিম্নলিখিত নোট করুন:

  • একবার UI পতাকাগুলি সাফ হয়ে গেলে (উদাহরণস্বরূপ, কার্যকলাপ থেকে দূরে নেভিগেট করে), আপনি যদি বারগুলি আবার লুকাতে চান তবে আপনার অ্যাপটিকে সেগুলি পুনরায় সেট করতে হবে। UI দৃশ্যমানতা পরিবর্তনের জন্য কীভাবে UI দৃশ্যমানতার পরিবর্তনগুলি শুনতে হয় সে সম্পর্কে আলোচনার জন্য UI দৃশ্যমানতার পরিবর্তনের প্রতিক্রিয়া দেখুন যাতে আপনার অ্যাপ সেই অনুযায়ী প্রতিক্রিয়া জানাতে পারে।
  • যেখানে আপনি UI পতাকা সেট করেন তা পার্থক্য করে। আপনি যদি আপনার কার্যকলাপের onCreate() পদ্ধতিতে সিস্টেম বারগুলি লুকিয়ে রাখেন এবং ব্যবহারকারী হোম টিপেন, তাহলে সিস্টেম বারগুলি আবার প্রদর্শিত হবে। ব্যবহারকারী যখন কার্যকলাপটি পুনরায় খোলে, onCreate() কল করা হবে না, তাই সিস্টেম বারগুলি দৃশ্যমান থাকবে। আপনি যদি চান যে ব্যবহারকারী আপনার কার্যকলাপের মধ্যে এবং বাইরে নেভিগেট করার সাথে সাথে সিস্টেম UI পরিবর্তনগুলি অব্যাহত থাকুক, onResume() বা onWindowFocusChanged() এ UI পতাকা সেট করুন।
  • পদ্ধতি setSystemUiVisibility() শুধুমাত্র তখনই প্রভাব ফেলবে যদি আপনি যে ভিউ থেকে কল করেন সেটি দৃশ্যমান হয়।
  • ভিউ থেকে দূরে নেভিগেট করার ফলে setSystemUiVisibility() সহ সেট করা পতাকাগুলি সাফ হয়ে যায়।

বিষয়বস্তু স্ট্যাটাস বারের পিছনে প্রদর্শিত করুন

অ্যান্ড্রয়েড 4.1 এবং উচ্চতর সংস্করণে, আপনি স্ট্যাটাস বারের পিছনে আপনার অ্যাপ্লিকেশানের বিষয়বস্তু দেখানোর জন্য সেট করতে পারেন, যাতে বিষয়বস্তু স্ট্যাটাস বার লুকিয়ে এবং দেখানোর মতো আকার পরিবর্তন না করে। এটি করতে, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN ব্যবহার করুন। আপনার অ্যাপটিকে একটি স্থিতিশীল বিন্যাস বজায় রাখতে সহায়তা করার জন্য আপনাকে SYSTEM_UI_FLAG_LAYOUT_STABLE ব্যবহার করতে হতে পারে৷

আপনি যখন এই পদ্ধতিটি ব্যবহার করেন, তখন আপনার অ্যাপের UI এর গুরুত্বপূর্ণ অংশগুলি (উদাহরণস্বরূপ, একটি মানচিত্র অ্যাপ্লিকেশনে অন্তর্নির্মিত নিয়ন্ত্রণগুলি) সিস্টেম বার দ্বারা কভার না হয় তা নিশ্চিত করা আপনার দায়িত্ব হয়ে যায়। এটি আপনার অ্যাপকে ব্যবহার অযোগ্য করে তুলতে পারে। বেশিরভাগ ক্ষেত্রে আপনি আপনার XML লেআউট ফাইলে android:fitsSystemWindows অ্যাট্রিবিউট যোগ করে এটি পরিচালনা করতে পারেন, এটি true সেট করা হয়েছে। এটি সিস্টেম উইন্ডোগুলির জন্য স্থান ছেড়ে দেওয়ার জন্য প্যারেন্ট ViewGroup প্যাডিং সামঞ্জস্য করে। এটি বেশিরভাগ অ্যাপ্লিকেশনের জন্য যথেষ্ট।

কিছু ক্ষেত্রে, যাইহোক, আপনার অ্যাপের জন্য পছন্দসই লেআউট পেতে আপনাকে ডিফল্ট প্যাডিং পরিবর্তন করতে হতে পারে। আপনার বিষয়বস্তু সিস্টেম বারের (যা উইন্ডোর "কন্টেন্ট ইনসেট" নামে পরিচিত একটি স্থান দখল করে) এর সাপেক্ষে কীভাবে আপনার বিষয়বস্তু তৈরি করে তা সরাসরি ম্যানিপুলেট করতে, fitSystemWindows(Rect insets) ওভাররাইড করুন। fitSystemWindows() পদ্ধতিটিকে ভিউ হায়ারার্কি দ্বারা ডাকা হয় যখন একটি উইন্ডোর বিষয়বস্তু ইনসেটগুলি পরিবর্তিত হয়, যাতে উইন্ডোটি সেই অনুযায়ী তার বিষয়বস্তু সামঞ্জস্য করতে পারে। এই পদ্ধতিটি ওভাররাইড করে আপনি ইনসেটগুলি (এবং তাই আপনার অ্যাপের লেআউট) পরিচালনা করতে পারেন তবে আপনি চান।