第一步,导入AndroidX 库,需要在Publishing Settings => Build 中自定义MainGradleTemplate.gradle文件。

在配置文件中,增加一行导入:implementation 'androidx.core:core:1.15.0'------或对应SDK更高的版本。

第二步,在Java文件中导入命名空间。
java
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.core.view.ViewCompat;
第三步,使用AndroidX控制状态栏属性。
java
AndroidHelper.activity.runOnUiThread(() -> {
AndroidHelper.window.setDecorFitsSystemWindows(false);
AndroidHelper.window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
AndroidHelper.window.addFlags (WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
AndroidHelper.window.setStatusBarColor (android.graphics.Color.TRANSPARENT);
AndroidHelper.window.setNavigationBarColor(android.graphics.Color.TRANSPARENT);
AndroidHelper.window.setStatusBarContrastEnforced (false);
AndroidHelper.window.setNavigationBarContrastEnforced(false);
WindowInsetsControllerCompat controller = WindowCompat.getInsetsController(AndroidHelper.window, AndroidHelper.decorView);
if (controller != null) {
controller.setAppearanceLightStatusBars (true);
controller.setAppearanceLightNavigationBars(true);
controller.show(WindowInsetsCompat.Type.systemBars());
}
});
第四步,Unity需要退出全屏状态。
cs
Screen.fullScreen = false;
第五步,使用AndroidX获取导航栏高度。
cs
public static int getNavigationBarHeight() {
WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(AndroidHelper.decorView);
if (insets != null) {
return insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom;
}
return 0;
}