该代码可在具有 Android 4.0 (API 14) 至 10 (API 29) 的真实手机和具有 Android R (API 30) 的 SDK 手机模拟器上运行。
在样式资源中编写启动活动的主题。
<!--Splash screen theme-->
<style name="SplashTheme" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@color/colorSplashBackground</item>
</style>
够了。无需代码为启动活动隐藏栏。
主要活动。
使用主题。
<!-- Base application theme. -->
<style name="myAppTheme" parent="@style/Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
</style>
在 MainActivity 类中编写代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
// Hide bar when you want. For example hide bar in landscape only
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
hideStatusBar_AllVersions();
}
setContentView( R.layout.activity_main );
// Add your code
}
实施方法。
@SuppressWarnings("deprecation")
void hideStatusBar_Deprecated() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { // < 16
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else { // 16...29
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
ActionBar ab = getSupportActionBar();
if (ab != null) { ab.hide(); }
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
@TargetApi(Build.VERSION_CODES.R) // >= 30
void hideStatusBar_Actual() {
View decorView = getWindow().getDecorView();
decorView.getWindowInsetsController().hide(WindowInsets.Type.statusBars());
}
void hideStatusBar_AllVersions(){
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
hideStatusBar_Deprecated();
} else {
hideStatusBar_Actual();
}
}