📅  最后修改于: 2023-12-03 15:34:57.285000             🧑  作者: Mango
setSystemUiVisibility()
是 Android 的一个方法,用于隐藏和显示系统 UI(即状态栏和导航栏)。此方法允许您控制何时隐藏 UI,并且可以与其他用户交互进行交互,例如轻轻触摸屏幕以显示 UI。
在本示例中,我们将演示如何使用setSystemUiVisibility()
来隐藏系统 UI。我们将使用基本的 Java 代码,以及一些 Android 资源。
为了成功运行此示例,您需要:
首先,我们需要创建一个新的 Android 项目。假设您已经熟练掌握了 Android Studio 的基础知识。如果没有,请参考 Android 开发文档。
我们需要一个布局文件来显示我们的 UI。在 res/layout
文件夹中创建一个名为 activity_main.xml
的文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/instructions_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Touch anywhere to hide the system UI"
android:textSize="24sp" />
</LinearLayout>
此布局只包含一个 LinearLayout,其中包含一个 TextView。
打开 MainActivity.java
文件,并添加以下代码:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideSystemUI();
}
}
private void hideSystemUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
);
}
onWindowFocusChanged()
是一个回调方法,当 Activity 的窗口焦点发生变化时将调用此方法。在此方法中,我们检查窗口焦点是否已获得,如果是,则调用 hideSystemUI()
方法。
hideSystemUI()
方法使用 setSystemUiVisibility()
来隐藏系统 UI。该方法使用以下标志:
现在,我们已经准备好在模拟器或设备上运行我们的应用程序了。运行应用程序后,您将看到一个 TextView。轻轻触摸屏幕即可隐藏系统 UI。
在本示例中,我们演示了如何使用setSystemUiVisibility()
来隐藏系统 UI。此方法是肯定可以扩展的,根据需要动态地显示和隐藏其他 UI 元素。但是请谨慎使用,因为隐藏 UI 可能会影响某些用户的可用性和可访问性。