যখন আপনি SYSTEM_UI_FLAG_IMMERSIVE ফ্লাগ ব্যবহার করেন, অন্য কোন ইউআই ফ্লাগ আপনি সেট করেছেন (SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_FULLSCREEN বা উভয়ই) তার উপর নির্ভর করে এটা সিস্টেম বার হাইড করে। যখন ইউজার একটি সিস্টেম বার রিজিওনে অভান্তরে সােয়াইপ করে, সিস্টেম বার দৃশ্যমান হয় এবং দৃশ্যমান অবস্থায় থাকে।
যখন সিস্টেম বার হাইড এবং শো হয় পূণরায় সাইজ হওয়া থেকে কনটেন্ট কে রাখতে অন্য সিস্টেম ইউআই ফ্লাগ (যেমন, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION এবং SYSTEM_UI_FLAG_LAYOUT_STABLE) অন্তর্ভূক্ত করতে এটা ভালো চর্চা। আপনার উচিত আরও নিশ্চিত করা যে একশন বার এবং ইউআই কন্ট্রোল একই সময়ে হিডেন অবস্থায় আছে। এই কোড দেখায় কীভাবে স্ট্যাটাস বার এবং নেভিগেশন বার হাইড এবং শো করতে হয়, কনটেন্টকে রি সাইজ না করেই:
// This snippet hides the system bars.
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
একটি উৎকৃষ্ট ইউজার এক্সেেপরিয়েন্স দিতে আপনি হয়তো IMMERSIVE ফ্লাগের সাথে একত্রে নিচের বিষয়গুলো বাস্তবায়ন করতে চাইবেন:
একটি লিসেনার রেজিস্টার করা যাতে আপনার অ্যাপ সিস্টেম ইউআই দৃশ্যমানতা পরিবর্তনের নোটিফিকেশন লাভ করে, যেভাবে Responding to UI Visibility Changes অধ্যায়ে আলোচনা করা হযেছে।
onWindowFocusChanged()বাস্তবায়ন করুন। আপনি যদি উইন্ডো ফোকাস অর্জন করেন, আপনি হয়তো সিস্টেম বারকে আবার হাইড করতে চাইবেন। আপনি যদি উইন্ডো ফোকাস হারিয়ে ফেলেন করেন, আপনি সম্ভবত যে কোন স্থগিত হাইড অপারেশন ক্যানসেল করতে চাইতে পারেন যা আপনি পূর্বে Handler.postDelayed() এর সাথে বা অন্য কিছুর সাথে শিডিউল কওে রেখেছেন।
আপনার কনটেন্ট টাচ করার মাধ্যমে ইউজারকে সিস্টেম বারের দৃশ্যমানতা ম্যানুয়েলি টোগল করতে দিতে একটি GestureDetector বাস্তবায়ন করুন যা onSingleTapUp(MotionEvent) চিহ্নিত করে। এর জন্য সিম্পল ক্লিক লিসেনার সবচেয়ে ভালো সমাধান নয় কারন তারা সক্রিয় হয় এমনকি যদি ইউজার স্ক্রিন জুড়ে একটি আঙুল ড্র্যাগ করে (দাম্ভিক ক্লিক টার্গেট সমগ্র স্ক্রিন নিয়ে নেয়)।