状态栏的设置和沉浸式模式的理解
来源:互联网 发布:部落冲突 女武神数据 编辑:程序博客网 时间:2024/05/14 19:38
设置状态栏:http://blog.csdn.net/maosidiaoxian/article/details/51734895
设置系统状态栏颜色需要至少在Android 4.4.2(API 19)以上
android 4.4.2新增了一个特性,可以设置系统状态栏为半透明。
实现方式一是在主题style中添加以下属性:
实现方式二是在Java代码中设置,即以下代码:
实现的后的效果就相当于将整个屏幕放在一个帧布局中,状态栏在上部,我们的界面在下部,而状态栏还是透明的效果若希望将状态栏不挡住我们的界面,还要定义一种颜色效果,可以在我们的界面顶部添加一个和状态栏相同高度的view,背景设置成我们希望的背景。
通过往Window窗口的decorView添加一个View,让它大小与系统状态栏一样,然后设置这个view的背景,就可以实现修改状态栏颜色的效果了
ViewGroup decorViewGroup = (ViewGroup) window.getDecorView();
View statusBarView = new View(window.getContext());
int statusBarHeight = getStatusBarHeight(window.getContext());
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, statusBarHeight);
params.gravity = Gravity.TOP;
statusBarView.setLayoutParams(params);
statusBarView.setBackgroundColor(color);
decorViewGroup.addView(statusBarView);
获取状态栏高度的方法代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
然后在我们的Activity的onCreate方法中使用以上代码就可以了。
Android 5.0.1(API 21)
window.setStatusBarColor(color);
使它生效,必须设置一个FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
属性,并且确保FLAG_TRANSLUCENT_STATUS
不被设置
Window window = activity.getWindow(); //取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//设置状态栏颜色
window.setStatusBarColor(color);
Android 6.0
//取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//设置状态栏颜色
window.setStatusBarColor(color);
由于与API 19设置状态栏半透明并添加一个View的实现方式不同,这里是直接设置状态栏的颜色的,所以如果我们的状态栏被设为白色的话,
上面同样白色的系统状态就看不到了。不过,6.0的API新增了一个属性来解决这一问题。即,
如果我们设置的状态栏颜色是接近于白色的话,可以在主题中添加以下属性:
- 1
- 1
这样,系统状态的那些文字图标就会变成黑色了,如一开始我们所看到的第三张图。
通过JAVA代码来设置的话如下:
沉浸式模式:
http://blog.csdn.net/guolin_blog/article/details/51763825
状态栏的使用:http://blog.csdn.net/ruancoder/article/details/54571720
- 状态栏的设置和沉浸式模式的理解
- 沉浸式状态栏的设置
- android沉浸状态栏和顶部状态栏背景色的设置
- 关于状态栏的沉浸式设置
- 沉浸式透明状态栏的设置
- android状态栏标题栏的沉浸式模式
- 真正的沉浸式模式状态栏
- Android之---沉浸式状态栏的错误理解(官方有沉浸模式的感念但是没有沉浸式状态栏的说法)
- Android状态栏的沉浸设置
- 把状态栏设置成透明的,沉浸式状态栏
- Android关于全屏设置和隐藏状态栏、沉浸式状态栏的总结
- 沉浸式和状态栏的隐藏
- android虚拟按键和状态栏的问题 沉浸式状态栏
- 设置沉浸式状态栏
- 设置沉浸式状态栏
- 设置沉浸式状态栏
- 设置沉浸式状态栏
- acvitity和fragment中都可以单独设置的沉浸式状态栏的自定义实现方式(包括白底黑字状态栏)
- 用calc()绘制手机图案解锁的九宫格样式
- Mysql 远程访问
- 2017暑期ACM俱乐部个人训练赛第2场 G题Balanced Photo(树状数组求逆序对)
- switch....case写的界面如何返回上一级
- msyql跨库复制表
- 状态栏的设置和沉浸式模式的理解
- FOR ALL ENTRIES IN内表排序、排重对性能的影响
- 客所思KD10传奇版声卡驱动 v3.3.160914 官方版
- 君正X系列开发---系统编译1
- A
- linux find命令-print0和xargs中-0使用技巧(转载)
- POJ1703 两种方法
- 嵌入式工具——iperf
- XListview上拉刷新,下拉加载