如果(Build.VERSION.SDK_INT=Build.VERSION_CODES.KITKAT){
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
或者你可以设置:如下
如果(Build.VERSION.SDK_INT=Build.VERSION_CODES.KITKAT){
设置半透明状态(真);
}
@TargetApi(19)
私有无效setTranslucentStatus(布尔值){
窗口赢=getWindow();
WindowManager.LayoutParams winParams=win.getAttributes();
最终int 位=WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
如果(上){
winParams.flags |=位;
} 别的{
winParams.flags=~bits;
}
win.setAttributes(winParams);
}这样设置后,运行效果如下:
2.png
如上图,整个应用程序将状态栏的高度向上移动,所以我们需要获取状态栏的高度,并在布局中添加一个小的占位符布局来完成。
2.1.2: 获取状态栏的高度/**
* 获取状态栏的高度
* @返回
*/
私有int getStatusBarHeight(){
尝试
{
Class?c=Class.forName("com.android.internal.R$dimen");
对象obj=c.newInstance();
字段field=c.getField("status_bar_height");
int x=Integer.parseInt(field.get(obj).toString());
返回getResources().getDimensionPixelSize(x);
}捕获(异常e){
e.printStackTrace();
}
返回0;
}2.1.3:设置占位符控件的高度,使原来的布局不会改变。
LinearLayout Linear_bar=(LinearLayout)findViewById(R.id. Linear_bar);
Linear_bar.setVisibility(View.VISIBLE);
int statusHeight=getStatusBarHeight();
android.widget.LinearLayout.LayoutParams params=(android.widget.LinearLayout.LayoutParams )linear_bar.getLayoutParams();
params.height=statusHeight;
Linear_bar.setLayoutParams(params);2.1.4: 运行结果
:模拟器效果
3.png
4.png
2.2: 第三方控件(systembartint)实现库地址(Github地址)
2.2.1: 添加依赖库编译"com.readystatesoftware.systembartint:systembartint:1.0.3" 2.2.2:设置状态栏和导航方式与2.1.1相同
2.2.3:激活主题并设置颜色
SystemBarTintManager TintManager=new SystemBarTintManager(this);
//激活状态栏
TintManager.setStatusBarTintEnabled(true);
//启用导航栏色调激活导航栏
TintManager.setNavigationBarTintEnabled(true);
//设置系统栏设置颜色
//tintManager.setTintColor(R.color.red);
//设置状态栏颜色
TintManager.setStatusBarTintResource(R.color.middle_red);
//设置导航栏设置资源
TintManager.setNavigationBarTintResource(R.color.color_nav);2.2.4:布局修改、适配和填充在当前Activity布局文件的根节点上进行如下修改:
【Android沉浸式状态栏开发教程:深入FastDev4Android框架(第六篇)】相关文章:
用户评论
我终于在 FastDev4Android 文档里找到了关于沉浸式状态栏的教程!
有7位网友表示赞同!
之前一直在想如何让 Android app 的状态栏更加融入屏幕,这篇文章正好解决我的问题!
有6位网友表示赞同!
看完这篇六篇组成的系列文章后,感觉对 Android 开发掌握了更多的知识和技能!
有17位网友表示赞同!
一直想学习 FastDev4Android 框架,这篇文章让我更有动力去尝试它!
有14位网友表示赞同!
原来实现沉浸式状态栏还有这么多细节需要注意啊!
有5位网友表示赞同!
作者写的教程非常细致易懂,即使对 Android 开发不太了解的人也能理解!
有20位网友表示赞同!
终于不用再看到碍眼的状态栏了, immersive 的体验太棒了!
有11位网友表示赞同!
这篇文章是我学习 Android 开发的必读资料之一!
有5位网友表示赞同!
希望 Future 可以继续提供更多关于 FastDev4Android 框架的干货文章!
有17位网友表示赞同!
分享给我的朋友一起学习!
有15位网友表示赞同!
原来状态栏的颜色也可以自定义啊!以前一直不知道!
有19位网友表示赞同!
感谢作者辛勤付出,让大家可以更方便地完成 Android 开发!
有12位网友表示赞同!
这篇文章给我带来了很多灵感,我打算在自己的项目里尝试使用沉浸式状态栏!
有15位网友表示赞同!
看完了文章后,我已经迫不及待想要实战了!
有11位网友表示赞同!
希望有更多关于 FastDev4Android 框架的学习资源!
有9位网友表示赞同!
这篇文章的例子很有帮助!
有8位网友表示赞同!
我之前遇到过类似的问题,幸好找到了这篇解决方案!
有7位网友表示赞同!
我已经收藏了这篇文章,方便以后查阅!
有13位网友表示赞同!
作者的技术水平很高,佩服!
有19位网友表示赞同!
这款 FastDev4Android 框架感觉很强大!
有20位网友表示赞同!