android Api21之后的状态栏会默认覆盖半透明遮罩,我们需要新建values-19,values-21 2份styles文件进行适配

Api-19

true

true

Api-21

false

true

@android:color/transparent

02dcb82d382be8e958a4245dee2465d.jpg

假如需要去除状态栏需要在Activity中添加

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

d8b9a347144e379b5c86f80fe716466.jpg

这种情况下,布局内容会延伸到状态栏,假如我们需要状态栏显示需要另外做处理

false

true

#ff0000

// 或者通过代码

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

getWindow().setStatusBarColor(Color.BLUE);

对于5.0以下的设备我们需要手动添加一个占位view来模拟状态栏显示

private void addStatusBarColor() {

ViewGroup mViewGroup = findViewById(android.R.id.content);

View mStatusView = new View(this);

ViewGroup.LayoutParams mParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,getStatusBarHeight());

mStatusView.setBackgroundColor(Color.BLUE);

mViewGroup.addView(mStatusView,mParams);

}

/**

* 通过反射拿到状态栏高度

*/

private int getStatusBarHeight() {

int height = 0;

int resId = getResources().getIdentifier("status_bar_height", "dimen", "android");

if(resId > 0){

height = getResources().getDimensionPixelSize(resId);

}

return height;

}

我们可以对版本做一个判断

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP){

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

getWindow().setStatusBarColor(Color.BLUE);

} else if(Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT){

ViewGroup mViewGroup = findViewById(android.R.id.content);

View mStatusView = new View(this);

ViewGroup.LayoutParams mParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,getStatusBarHeight());

mStatusView.setBackgroundColor(Color.BLUE);

mViewGroup.addView(mStatusView,mParams);

}

以上都需要添加在布局中添加fitsSystemWindow = true ,或者在代码中进行设置

public void setRootViewFitsSystemWindows() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

ViewGroup winContent = findViewById(android.R.id.content);

if (winContent.getChildCount() > 0) {

ViewGroup rootView = (ViewGroup) winContent.getChildAt(0);

if (rootView != null) {

rootView.setFitsSystemWindows(true);

}

}

}

}

9ba64c82d2450d873fccc6c2545b883.jpg

假如我们设置状态栏颜色较浅会看不清状态栏字体,除了小米和魅族对底层代码做了处理,其余需要使用到6.0 的一个新属性SYSTEM_UI_FLAG_LIGHT_STATUS_BAR该属性可以兼容亮色背景。该属性需要在设置了FLAG_DRAWS_SYSTEM_BAR_BACKGROUND和清除FLAG_TRANSLUCENT_STATUS属性才能使用

// 代码设置

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

getWindow().getDecorView().setSystemUiVisibility(

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

}

// 新建values-v23文件夹

false

true

#fff

true

899a9f36f7e795e0808aab24c324fb3.jpg

6a5446429a3ed4ea81c429711ac21b9.jpg

沉浸式状态栏需要写html,沉浸式状态栏相关推荐

  1. android沉浸式模式简书,Android 沉浸式模式与常见状态栏和导航栏效果

    Android沉浸式模式 官方称沉浸式状态栏为沉浸式模式. 什么是沉浸式? 沉浸式就是让人专注当前的(由设计者营造)情境下感到愉悦和满足,而忘记真实的情境. 什么是Android中的沉浸式? 当启用该 ...

  2. android沉浸式 字体,全面解析android沉浸式状态栏

    一.沉浸式实现方式 实现沉浸式状态样主要有两种方式,一种是通过设置theme来实现,另一种是代码中实现 1.1通过设置theme来实现 通过theme设置也有两种方法 方法一: values/styl ...

  3. android 9.0去掉状态栏,安卓9.0沉浸式状态栏

    首先我们来了解一下几个设置沉浸式状态栏的基础属性: 1.View.SYSTEM_UI_FLAG_LOW_PROFILE:低调模式, 会隐藏不重要的状态栏图标: 2.View.SYSTEM_UI_FLA ...

  4. (AS笔记)Android全透明沉浸式主题样式——全屏沉浸隐藏底部导航栏

           上一章介绍了,Android全透明沉浸式主题样式--顶部状态栏+底部导航栏,教程传送门链接:         (AS笔记)Android全透明沉浸式主题样式--顶部状态栏+底部导航栏   ...

  5. 学习响应式BootStrap来写融职教育网站,Bootsrtap第五天页脚

    学习响应式BootStrap来写融职教育网站,Bootsrtap第五天页脚 <!DOCTYPE html> <html lang="zh_CN"> < ...

  6. 用html写除法竖式代码,除法的竖式写法

    <除法的竖式写法>由会员分享,可在线阅读,更多相关<除法的竖式写法(14页珍藏版)>请在人人文库网上搜索. 1.除法竖式的认识,有余数的除法,五,课件设计:张李梅 四川巴中市恩 ...

  7. 分数如何进行竖式计算机,分数列竖式计算怎么写

    1.分数怎么列竖式计算 分数一般转化为小数,之后再进行竖式计算. 例如算式:1/2+3转化为0.5+3 竖式如下: 扩展资料: 竖式计算法则 1.乘法 一个数的第i位乘上另一个数的第j位 就应加在积的 ...

  8. cbac式_写出abca式的成语

    1. 请写出3个abc c的成语 众口嗷嗷 福寿绵绵 天网恢恢 气息奄奄 气势汹汹 妙手空空 杨柳依依 英姿勃勃 小时了了 大才盘盘 含情脉脉 关情脉脉 空腹便便 暮气沉沉 苦海茫茫 心事重重 兴致勃 ...

  9. 在html中写响应式布局的代码,手机端自适应响应式框架,移动端响应式布局代码...

    移动端自适应框架,响应式布局,如何实现移动端不同分辨率的手机?在本文能够详解,响应式布局是HTML5和css的结合是必然,但是很多朋友不知道怎么实现不同分辨率下的手机端,自适应框架在本站也有,但是具体 ...

最新文章

  1. Spark Streaming之:Flume监控目录下文件内容变化,然后Spark Streaming实时监听Flume,然后从其上拉取数据,并计算出结果
  2. 【设计模式】 桥梁模式
  3. 【317】python 指定浏览器打开网页 / 文件
  4. snipaste截图软件滚动截图_截图工具的逆袭,Snipaste 还可以这么玩
  5. centos5.8上安装git server
  6. 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
  7. 基于RANSAC的激光点云分割
  8. 诺基亚收购阿朗再交易 持股比例将超95%
  9. 浅谈volatile的原理
  10. 激光条纹中心提取——zhang细化+灰度重心法
  11. 百度网盘加速下载方法——系统自带的提速模式和积分模式区别
  12. xgboost的plot_importance绘图时出现的f0、f1、f2、f3、f4、f5等改为对应特征的字段名
  13. 微信小程序重新发起请求加载页面
  14. 人脸特征点检测:SDM
  15. 33岁,工作10年的老测试员被裁,所谓经验根本不值钱
  16. 【threejs开发随笔】three.js基于八叉树的碰撞检测
  17. 如何将Word/PDF转成高质量XML
  18. 计算机专业拜年语,南昌理工学院计算机信息工程学院给您拜年啦!!
  19. mysql查找 提速_MySQL加速查询速度的独门武器:查询缓存
  20. 小学计算机兴趣小组活动记计划,小学兴趣小组年度工作计划(通用5篇)

热门文章

  1. 百度编辑器Ueditor1.4.3的使用
  2. 同底数幂比较大小方法_七年级下学期,幂的乘方常见题型分析,利用法则比较大小...
  3. Android性能优化最佳实践,源码+原理+手写框架
  4. android浏览器插件
  5. 上网卡,流量卡的使用
  6. 百度地图根据当前ip定位
  7. C++运算符重载(超全)
  8. python操作protobuf基础
  9. hnu社交网络分析作业2
  10. ChatGPT 教你快速制作PPT