Android沉浸式状态栏

关于沉浸式状态栏的种种就不多详谈了,稍微Google一下一大片,这里添几句代码实现:
主活动onCreate():

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT)
 {
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 }

在相应的布局xml文件添加

android:fitsSystemWindows="true"
android:clipToPadding="true"

---------------------------------华丽的分割线-----------------------------
上面对于低版本可以一劳永逸,但稍高的版本就不起作用了,下面根据我的项目实际需求写一下(活动onCreate())

1. 主界面
页面需要占用状态栏的空间,状态栏背景设为透明,但是状态栏的文字颜色需要根据页面的背景颜色稍微调整(例如页面背景颜色和状态栏字体颜色都为白色,状态栏文字相当于不可见)

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT)
   	{
           Window window = getWindow();
           window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                   | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
           if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP){
           	//设置状态栏透明
            window.setStatusBarColor(Color.TRANSPARENT);
               //根据页面背景颜色修改状态栏字体颜色(暗-->白色;亮-->黑色)
   			View decor = window.getDecorView();
   			if (true) {
   				decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
   			} else {
   				decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
   			}
           }

   	}

在这里插入图片描述
2. 子页面
子页面需要使用标题栏,所以将标题栏的背景颜色和状态栏的背景颜色改成一致即可(有需要可以把页面的背景颜色改成一致或者是渐变的颜色)

Window window = getWindow();
   	if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
   	{
   		window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
   		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
   			window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //清除沉浸式状态栏
   			window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
   			window.setStatusBarColor(this.getResources().getColor(R.color.colorPrimary)); //设置状态栏颜色
   		}
   	}

在对应Activity的xml布局文件添上:

android:fitsSystemWindows="true"
android:clipToPadding="true"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值