Android Studio 透明状态栏的实现示例
作者:FDR_Enterprise 时间:2022-12-06 21:44:23
最近正在学习使用Android Studio,发现默认的Hello World程序界面和我们平时使用的APP界面有很大的不同,多了Action Bar以及状态栏,比较影响用户体验。于是我上网搜索了一下怎么实现透明的App状态栏。在这里做一个记录。
要求API 23以上。
透明状态栏
//插入到OnCreate()中
if(Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
以下是效果图
改变状态栏文字颜色
我们发现由于背景是浅色的,状态栏改为透明后状态栏中的内容不好读出,那么我们可以把状态栏中的文字颜色改为深色
public void changeStatusBarTextColor(Window window, boolean isBlack) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = window.getDecorView();
int flags = 0;
if (isBlack) {
//更改文字颜色为深黑色
flags = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
else {
//更改文字颜色为浅色
flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
}
decor.setSystemUiVisibility(flags);
}
}
//记得调用。根据不同的背景色灵活调用函数
效果图如下
可以看到,文字变成了深黑色。
沉浸模式
如果我们根本就不想要状态栏的话,可以使用如下函数
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
}
效果图如下,这时候需要滑动顶部才会显示状态栏
参考文献:网上的资料,他人博客
来源:https://blog.csdn.net/FDR_Enterprise/article/details/116243091
标签:Android,Studio,透明状态栏
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
WinForm中的几个实用技巧汇总
2022-08-12 13:17:02
Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法
2023-06-30 02:16:15
SpringBoot如何集成PageHelper分页功能
2022-10-22 03:18:34
23种设计模式(7) java代理模式
2023-01-28 21:57:20
基于java配置nginx获取真实IP代码实例
2023-07-15 12:32:46
Android Studio 2022.1.1创建项目的Gradle配置问题
2022-05-05 21:45:36
![](https://img.aspxhome.com/file/2023/7/102587_0s.png)
C#byte数组与Image的相互转换实例代码
2023-08-15 16:15:51
Android Support Library 标题栏(Toolbar)滚动效果实现方法
2022-10-24 03:25:12
![](https://img.aspxhome.com/file/2023/4/138974_0s.gif)
java WebSocket 服务端实现代码
2022-09-28 00:30:52
![](https://img.aspxhome.com/file/2023/8/92668_0s.png)
Groovy的规则脚本引擎实例解读
2023-07-11 21:24:04
![](https://img.aspxhome.com/file/2023/6/65186_0s.jpg)
C#异常处理总结及简单实例
2022-10-02 13:48:30
替换so文件来动态替换Flutter代码实现详解
2023-06-23 16:24:06
![](https://img.aspxhome.com/file/2023/9/83549_0s.png)
java实现文件下载的两种方式
2023-11-11 06:37:14
详细分析Java内存模型
2022-01-31 09:37:05
![](https://img.aspxhome.com/file/2023/0/132060_0s.png)
详解JAVA中的Collection接口和其主要实现的类
2021-06-20 19:14:08
微信Android热更新Tinker使用详解(星空武哥)
2023-06-08 04:08:17
![](https://img.aspxhome.com/file/2023/0/138630_0s.png)
SpringBoot配置文件中密码属性加密的实现
2022-07-08 18:32:03
![](https://img.aspxhome.com/file/2023/8/64018_0s.jpg)
C++中的String的常用函数用法
2023-03-26 17:52:45
![](https://img.aspxhome.com/file/2023/8/105168_0s.png)
Android常见控件使用详解
2023-03-11 13:15:23
![](https://img.aspxhome.com/file/2023/6/91666_0s.jpg)
java面试题之数组中的逆序对
2021-08-05 10:51:02
![](https://img.aspxhome.com/file/2023/6/111436_0s.jpg)