Android में नेविगेशन बार परमानेंटली हाइड करने का पूरा गाइड
यह ट्यूटोरियल दिखाता है कि कैसे इमर्सिव स्टिकी मोड का उपयोग करके नेविगेशन बार (बैक, होम, रीसेंट बटन) को स्थायी रूप से छुपाया जाए, जिससे यूजर इंटरैक्शन तक यह छुपा रहे।
चरण 1: प्रोजेक्ट सेटअप
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट फाइल
res/layout/activity_main.xml - स्टैंडर्ड ConstraintLayout:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="हैलो वर्ल्ड!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
चरण 3: इमर्सिव स्टिकी मोड इम्प्लीमेंटेशन
src/MainActivity.java में पूरा कोड:
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private int currentApiVersion;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currentApiVersion = Build.VERSION.SDK_INT;
hideNavigationBar();
}
private void hideNavigationBar() {
final int flags = 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 |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
if (currentApiVersion >= Build.VERSION_CODES.KITKAT) {
getWindow().getDecorView().setSystemUiVisibility(flags);
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
decorView.setSystemUiVisibility(flags);
}
}
});
}
}
@SuppressLint("NewApi")
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (currentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus) {
getWindow().getDecorView().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 |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
}
मुख्य फ्लैग्स समझाए गए
| फ्लैग | उद्देश्य |
|---|---|
| SYSTEM_UI_FLAG_IMMERSIVE_STICKY | नेविगेशन बार को छुपाता है, स्वाइप पर अस्थायी रूप से दिखाता है |
| SYSTEM_UI_FLAG_HIDE_NAVIGATION | नेविगेशन बार छुपाता है |
| SYSTEM_UI_FLAG_FULLSCREEN | स्टेटस बार छुपाता है |
| SYSTEM_UI_FLAG_LAYOUT_STABLE | लेआउट स्थिर रखता है जब सिस्टम UI दिखता/छुपता है |
चरण 4: मैनिफेस्ट कॉन्फ़िगरेशन
सुनिश्चित करें कि एक्टिविटी सही थीम का उपयोग करती है।
बेस्ट प्रैक्टिसेज
- हमेशा
onWindowFocusChanged()में फ्लैग्स रीअप्लाई करें - यूजर को बताएं कि नेविगेशन के लिए कहां स्वाइप करना है
- गेम्स और फुलस्क्रीन मीडिया ऐप्स के लिए आदर्श