Android记录 透明状态栏+固化的沉浸模式的简单实现
代码中实现透明状态栏的方法:
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding _binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
translationStatusBar();
_binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(_binding.getRoot());
}
// 透明状态栏
private void translationStatusBar() {
if (Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
// 此时使用 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 时界面会和导航栏重叠
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
getSupportActionBar().hide();
}
}
代码中简单实现固化的沉浸模式的方法:
public class MainActivity2 extends AppCompatActivity {
private ActivityMainBinding _binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setFullscreenAndNoNavigation();
_binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(_binding.getRoot());
}
// 沉浸模式
private void setFullscreenAndNoNavigation() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
}
// 沉浸模式、保持
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
//判断4.4以上版本
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
//获得DecorView
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE //来帮助你的app来维持一个稳定的布局
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //确保appUI的主要部分不会因为被系统导航栏覆盖而结束
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //确保appUI的主要部分不会因为被系统状态栏覆盖而结束
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隐藏导航栏
| View.SYSTEM_UI_FLAG_FULLSCREEN //表示全屏,会将状态栏隐藏,只会隐藏状态栏
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
// SYSTEM_UI_FLAG_IMMERSIVE 非粘性的沉浸式
// SYSTEM_UI_FLAG_IMMERSIVE_STICKY 粘性的沉浸式
}
}
}

浙公网安备 33010602011771号