上次说过有时间将会写一遍关于沉浸式状态栏的文章,关于沉浸式状态栏对于有实际开发经验的程序员来说应该不会陌生,在实际app开发中这需求十分的遍布,但是能用好也是对app功能效果上的一种提升.那现在我就切合我实际的开发经验来谈谈自己开发中遇到的坑,解决好不同版本的适配的问题.
先帖代码在慢慢的分析:
这个方法在onCreat()方法中调用,也可以在baseActivity中调用
private void initWindows() {
Window window = getWindow();
//这里是自己定义状态栏的颜色 int color = getResources().getColor(R.color.colorPrimary);
ViewGroup contentView = ((ViewGroup) findViewById(android.R.id.content)); View childAt = contentView.getChildAt(0); if (childAt != null) {
// 设置内容布局充满屏幕 childAt.setFitsSystemWindows(true); } // 5.0及以上 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(color); // 4.4到5.0 } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 透明状态栏 window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); View view = new View(this); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(this))); view.setBackgroundColor(color); contentView.addView(view); } } /** * 获取状态栏高度 * * @param context context * @return 状态栏高度 */ private static int getStatusBarHeight(Context context) { int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); return context.getResources().getDimensionPixelSize(resourceId);
}
上面的代码可以直接的拷贝到自己的项目中直接用,希望这边文章对你有所帮助,求关注与赞谢谢!!!!!!!!