android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...
Android 5.0(API 21)之后就可以对系统状态栏进行设置了,这里我不是想深入讨论对系统状态栏的一些高级设置,因为一般也用不到,我只想说最常见的两种场景
隐藏系统状态栏,这就是感觉很牛逼的沉浸式状态栏
状态栏颜色变化后状态栏显示内容颜色随之改变
1. 沉浸式状态栏
这种最简单,只需要拿到当前activity window的DecorView,然后设置setSystemUiVisibility()即可。
示例:
Window window = activity.getWindow();
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.TRANSPARENT);
}
其实想要沉浸式状态栏,只需要设置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN属性足够了,其他的只是些通用做法。比如View.SYSTEM_UI_FLAG_LAYOUT_STABLE是设置状态栏字体颜色还是跟随系统。window.setStatusBarColor(Color.TRANSPARENT)是设置状态栏为全透明。
上面代码的作用就是状态栏的高度没有了,但是注意状态栏的显示还是有的,就是这样:
是不是很丑?这时候你的产品经理肯定会不满意,要你改,我猜他是不是想要这种效果:
如果我猜对了,那么就继续看吧!
2. 重新设置你的TitleBar
这个解决方法更简单,就是改变TitleBar的高度和paddingTop,看下面示例就会豁然开朗:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
ViewGroup.LayoutParams params = view.getLayoutParams();
int topMargin = getStatusBarHeight(view.getContext());
params.height = params.height + topMargin;
view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + topMargin, view.getPaddingRight(), view.getPaddingBottom());
view.setLayoutParams(params);
}
这里的view当然就是你的TitleBar,状态栏的颜色是你的TitleBar的背景色。效果见上图。
getStatusBarHeight(context)应该不用我说了,不会的话自己百度。
3. 设置状态栏显示字体内容颜色
这种场景很常见,比如上面的图,如果你的TitleBar是白色或者浅色,那么你状态栏的显示内容将会看不见,或者很丑。
这个时候你需要改变你状态栏显示内容的颜色,只有几行代码:
Window window = activity.getWindow();
if (ColorUtils.calculateLuminance(color) >= 0.5) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
color就是你设置的状态栏颜色,或者说是TitleBar的背景色,但注意这是一个int值,不是resourceId。
ColorUtils.calculateLuminance(color) >= 0.5的作用只是确定这个颜色是亮色还是暗色。
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR是帮你把状态栏显示内容变成黑色,而View.SYSTEM_UI_FLAG_LAYOUT_STABLE是跟随系统。
小结
学会以上三点,你基本可以交差了,但是下面的这种场景你应该还是要知道。
4. 状态栏着色
可能由于某种特定原因,你可能想给状态栏设置另外一种颜色,那么这也很简单:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.your_color));
}
比如下图我把状态栏设置成黑色:
android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...相关推荐
- Android布局延伸状态栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
Android应用中经常会有一些要求全屏显隐状态栏导航栏的需求.通过全屏沉浸式的处理可以让应用达到更好的显示效果.下面系统的讲解一下有关全屏,隐藏状态栏导航栏,沉浸式的知识. 在Android4.1之 ...
- Android状态栏微技巧,带你真正理解沉浸式模式
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- android 沉浸式菜单栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
Android应用中经常会有一些要求全屏显隐状态栏导航栏的需求.通过全屏沉浸式的处理可以让应用达到更好的显示效果.下面系统的讲解一下有关全屏,隐藏状态栏导航栏,沉浸式的知识. 在Android4.1之 ...
- (转)Android状态栏微技巧,带你真正理解沉浸式模式
版权声明:本文出自郭霖的博客,转载必须注明出处. https://blog.csdn.net/sinyu890807/article/details/51763825 转载请注明出处:http://b ...
- 《Android状态栏微技巧,带你真正理解沉浸式模式(转载)》
最近爱上了郭神的文章,不禁转发一下~~ 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51763825 本文同步发表于我的微信公众号 ...
- Android状态栏微技巧,带你真正理解沉浸式模式(转)
转载自:http://blog.csdn.net/guolin_blog/article/details/51763825 记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算 ...
- android沉浸式模式简书,Android 沉浸式模式与常见状态栏和导航栏效果
Android沉浸式模式 官方称沉浸式状态栏为沉浸式模式. 什么是沉浸式? 沉浸式就是让人专注当前的(由设计者营造)情境下感到愉悦和满足,而忘记真实的情境. 什么是Android中的沉浸式? 当启用该 ...
- (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏
目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...
- android 沉浸式之改变小米状态栏颜色
这个是基于SystemBarTintManager更改的 增加一个方法:用于更改MIUIV6系统上的状态栏字体颜色 ,目前我仅仅只发现MIUIV6上可以更改,在android5.0上以及其它4.4以上 ...
最新文章
- gpg加密命令 linux_用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国...
- ios ble 参考
- reverse() 几种操作
- sparkmllib scala NaiveBayes Demo
- php workman 多线程,workerman如何多线程
- Metro 应用无法打开解决办法
- aix下oracle 12.1.0.2 asmca不能打开的故障
- 因为太难而被禁用的17道Google面试题
- 视觉SLAM十四讲_1_简介
- 汉诺塔游戏玩法介绍(攻略和编程实现)
- Vue中base64编码和解码
- python 热度图_keras CNN卷积核可视化,热度图教程
- Matlab中max函数用法
- Fruit 有上下限的母函数
- 零输入响应,零状态响应和完全响应
- 支持DISTINCT的通用分页存储过程(SQL2005)
- 方法的调用,构造方法,方法的重载
- 秀一下大连TimesTen 18.1培训的结业证
- 六度分离【Floyd】
- python 实时获取股票行情脚本