你以一个10年经验的高级Android开发的身份,给我写一个java工具类SystemUiUtil,要求适配Android11系统,需要有设置沉浸式,取消沉浸式,隐藏底部导航栏,显示底部导航栏,隐藏顶部状态栏和标题栏,显示顶部状态栏和标题栏,设置全屏,取消全屏的方法,并为每一行代码加上注释
时间: 2023-06-04 22:05:24 浏览: 107
好的,以下是SystemUiUtil的代码,已经适配Android11系统。请注意,本工具类只提供了对系统UI的操作,不涉及业务逻辑。
```java
/**
* 系统UI工具类,提供设置、隐藏和显示系统UI的方法。
*/
public class SystemUiUtil {
/**
* 隐藏状态栏和标题栏,进入全屏模式。
* @param activity 当前Activity
*/
public static void hideSystemUi(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 显示状态栏和标题栏,退出全屏模式。
* @param activity 当前Activity
*/
public static void showSystemUi(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 隐藏底部导航栏。
* @param activity 当前Activity
*/
public static void hideBottomNavigation(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 显示底部导航栏。
* @param activity 当前Activity
*/
public static void showBottomNavigation(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 设置沉浸式。
* @param activity 当前Activity
*/
public static void setImmersive(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 取消沉浸式。
* @param activity 当前Activity
*/
public static void clearImmersive(Activity activity) {
View decorView = activity.getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
}
/**
* 设置全屏。
* @param activity 当前Activity
*/
public static void setFullScreen(Activity activity) {
Window window = activity.getWindow();
WindowManager.LayoutParams attrs = window.getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
window.setAttributes(attrs);
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
/**
* 取消全屏。
* @param activity 当前Activity
*/
public static void clearFullScreen(Activity activity) {
Window window = activity.getWindow();
WindowManager.LayoutParams attrs = window.getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
window.setAttributes(attrs);
window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
}
```