沉浸式状态栏需要写html,沉浸式状态栏
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,沉浸式状态栏相关推荐
- android沉浸式模式简书,Android 沉浸式模式与常见状态栏和导航栏效果
Android沉浸式模式 官方称沉浸式状态栏为沉浸式模式. 什么是沉浸式? 沉浸式就是让人专注当前的(由设计者营造)情境下感到愉悦和满足,而忘记真实的情境. 什么是Android中的沉浸式? 当启用该 ...
- android沉浸式 字体,全面解析android沉浸式状态栏
一.沉浸式实现方式 实现沉浸式状态样主要有两种方式,一种是通过设置theme来实现,另一种是代码中实现 1.1通过设置theme来实现 通过theme设置也有两种方法 方法一: values/styl ...
- android 9.0去掉状态栏,安卓9.0沉浸式状态栏
首先我们来了解一下几个设置沉浸式状态栏的基础属性: 1.View.SYSTEM_UI_FLAG_LOW_PROFILE:低调模式, 会隐藏不重要的状态栏图标: 2.View.SYSTEM_UI_FLA ...
- (AS笔记)Android全透明沉浸式主题样式——全屏沉浸隐藏底部导航栏
上一章介绍了,Android全透明沉浸式主题样式--顶部状态栏+底部导航栏,教程传送门链接: (AS笔记)Android全透明沉浸式主题样式--顶部状态栏+底部导航栏 ...
- 学习响应式BootStrap来写融职教育网站,Bootsrtap第五天页脚
学习响应式BootStrap来写融职教育网站,Bootsrtap第五天页脚 <!DOCTYPE html> <html lang="zh_CN"> < ...
- 用html写除法竖式代码,除法的竖式写法
<除法的竖式写法>由会员分享,可在线阅读,更多相关<除法的竖式写法(14页珍藏版)>请在人人文库网上搜索. 1.除法竖式的认识,有余数的除法,五,课件设计:张李梅 四川巴中市恩 ...
- 分数如何进行竖式计算机,分数列竖式计算怎么写
1.分数怎么列竖式计算 分数一般转化为小数,之后再进行竖式计算. 例如算式:1/2+3转化为0.5+3 竖式如下: 扩展资料: 竖式计算法则 1.乘法 一个数的第i位乘上另一个数的第j位 就应加在积的 ...
- cbac式_写出abca式的成语
1. 请写出3个abc c的成语 众口嗷嗷 福寿绵绵 天网恢恢 气息奄奄 气势汹汹 妙手空空 杨柳依依 英姿勃勃 小时了了 大才盘盘 含情脉脉 关情脉脉 空腹便便 暮气沉沉 苦海茫茫 心事重重 兴致勃 ...
- 在html中写响应式布局的代码,手机端自适应响应式框架,移动端响应式布局代码...
移动端自适应框架,响应式布局,如何实现移动端不同分辨率的手机?在本文能够详解,响应式布局是HTML5和css的结合是必然,但是很多朋友不知道怎么实现不同分辨率下的手机端,自适应框架在本站也有,但是具体 ...
最新文章
- Spark Streaming之:Flume监控目录下文件内容变化,然后Spark Streaming实时监听Flume,然后从其上拉取数据,并计算出结果
- 【设计模式】 桥梁模式
- 【317】python 指定浏览器打开网页 / 文件
- snipaste截图软件滚动截图_截图工具的逆袭,Snipaste 还可以这么玩
- centos5.8上安装git server
- 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
- 基于RANSAC的激光点云分割
- 诺基亚收购阿朗再交易 持股比例将超95%
- 浅谈volatile的原理
- 激光条纹中心提取——zhang细化+灰度重心法
- 百度网盘加速下载方法——系统自带的提速模式和积分模式区别
- xgboost的plot_importance绘图时出现的f0、f1、f2、f3、f4、f5等改为对应特征的字段名
- 微信小程序重新发起请求加载页面
- 人脸特征点检测:SDM
- 33岁,工作10年的老测试员被裁,所谓经验根本不值钱
- 【threejs开发随笔】three.js基于八叉树的碰撞检测
- 如何将Word/PDF转成高质量XML
- 计算机专业拜年语,南昌理工学院计算机信息工程学院给您拜年啦!!
- mysql查找 提速_MySQL加速查询速度的独门武器:查询缓存
- 小学计算机兴趣小组活动记计划,小学兴趣小组年度工作计划(通用5篇)