沉浸式设计

Android 4.4(19)设置沉浸式状态栏
1、通过主题的方式

@color/colorPrimary @color/colorPrimaryDark @color/colorAccenttruetrue

2、通过代码的方式设置
//设置沉浸式状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //设置虚拟导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

Android 5.0(21)以上设置沉浸式状态栏
1、通过主题设置状态栏的颜色
@color/colorPrimary @color/colorPrimaryDark @color/colorAccent@android:color/transparent

没有达到我们想要的效果,是因为我们还需要设置全屏。下面我们通过代码的方式实现。

沉浸式设计
文章图片
【沉浸式设计】2、通过代码的方式
Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //设置状态栏颜色透明 window.setStatusBarColor(Color.TRANSPARENT); int visibility = window.getDecorView().getSystemUiVisibility(); //布局内容全屏展示 visibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; //隐藏虚拟导航栏 visibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; //防止内容区域大小发生变化 visibility |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE; window.getDecorView().setSystemUiVisibility(visibility);

沉浸式设计
文章图片
沉浸式状态栏适配Toolbar 沉浸式设计
文章图片
public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); immersive(); setHeightAndPadding(this, findViewById(R.id.toolbar)); }private void immersive() { //安卓4.4之前没有不支持沉浸式状态栏 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return; }//安卓5.0及之后的版本设置沉浸式状态栏 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //设置状态栏颜色透明 window.setStatusBarColor(Color.TRANSPARENT); int visibility = window.getDecorView().getSystemUiVisibility(); //布局内容全屏展示 visibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; //隐藏虚拟导航栏 visibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; //防止内容区域大小发生变化 visibility |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE; window.getDecorView().setSystemUiVisibility(visibility); } else { //安卓5.0及之后的版本设置沉浸式状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); }}public int getStatusBarHeight(Context context) { int resId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resId > 0) { return context.getResources().getDimensionPixelSize(resId); } return 0; }public void setHeightAndPadding(Context context, View view) { ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.height += getStatusBarHeight(context); view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + getStatusBarHeight(context), view.getPaddingRight(), view.getPaddingBottom()); } }

    推荐阅读