📜  android 片段全屏 (1)

📅  最后修改于: 2023-12-03 15:29:22.230000             🧑  作者: Mango

Android 片段全屏

在 Android 应用中,片段(Fragment)是一种可重用的 UI 组件,可以在活动(Activity)中动态添加、移除和替换。有时需要将片段全屏显示,以提供更好的用户体验和更广阔的视野。

实现方式
方式一:使用全屏主题

Android 提供了一个全屏主题(android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"),可以将当前活动设置为全屏显示。在片段中使用该主题,即可实现片段全屏显示的效果。

<style name="FullScreenTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen" />

在片段对应的布局文件中使用该主题:

<!-- 布局文件中设置全屏主题 -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:theme="@style/FullScreenTheme"
    ...>
    <!-- 片段布局内容 -->
</LinearLayout>

需要注意的是,在使用全屏主题时,片段的状态栏和导航栏会被完全隐藏。如果需要让系统栏在特定的交互时显示出来,可以调用相应的 API,例如:

View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
方式二:动态设置全屏

另一种实现片段全屏的方式是通过代码动态设置系统栏的可见性。在片段的生命周期回调中,可以根据状态来控制系统栏的显示和隐藏。

首先在片段的 onCreateView() 方法中设置布局为全屏模式:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_example, container, false);
    // 设置布局为全屏模式
    view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    return view;
}

然后在片段的 onResume() 方法中开启全屏模式:

@Override
public void onResume() {
    super.onResume();
    // 开启全屏模式
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        uiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE;
    }
    getActivity().getWindow().getDecorView().setSystemUiVisibility(uiOptions);
}

最后在片段的 onPause() 方法中离开全屏模式:

@Override
public void onPause() {
    super.onPause();
    // 离开全屏模式
    int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
    getActivity().getWindow().getDecorView().setSystemUiVisibility(uiOptions);
}
注意事项

在使用全屏模式时需要注意以下几点:

  • 片段可能会遮盖当前活动中的其他视图,需要根据实际情况调整布局内容和层级关系;
  • 隐藏系统栏可能会导致用户不知道自己应该怎么退出当前片段,因此需要添加适当的退出按钮或手势操作;
  • 全屏显示并不适用于所有场景,需要根据用户的使用习惯和操作方式来决定是否使用全屏模式。