网站首页 > 博客文章 正文
Hello,大家好,今天教大家怎么样通过使用Kotlin语言去实现Android沉浸式状态栏,废话不多说,让我们直奔主题吧!
对于Android来说什么是沉浸式状态栏?给个图你对比看就懂了:
对比上面两张照片后,沉浸式和非沉浸式状态栏的区别就出来了,当然沉浸式状态栏还有其他种类。比如像你在玩游戏的时候,你如果没有在状态栏的位置下拉,状态栏是不会出来的,这种也是常用的沉浸式状态栏一种。
好,了解完沉浸式状态栏和非沉浸式状态栏的区别后,我们现在开始真正地去实现它。
首先,我们要先去判断我们的Android版本,如果是大于5.0,我们就适配我们的沉浸式状态栏。接着,我们需要获取我们最上层的View来进行操作,Android顶层的View是window,所以我们先获取window,然后去设置我们的systemUiVisibility为全屏且需要状态栏,当然别忘了设置statusBar为透明。代码如下:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//判断Android的版本是否大于5.0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
//获取最上层的View进行操作
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
.or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
window.statusBarColor = Color.TRANSPARENT//透明
}
}
}
还有,我们需要在AndroidManifest文件下设置我们activity的主题为NoActionBar,代码如下:
<activity android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最后贴一下我的XML布局文件的代码,方便小白阅读实现:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:background="@color/colorAccent"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
>
</androidx.constraintlayout.widget.ConstraintLayout>
这样我们的沉浸式的状态栏就实现了,这是我们第一种实现方式,那么如果想实现游戏全屏沉浸式状态栏又该怎么样做呢?别急,我早有准备,我们其他代码不改,在我们的systemUiVisibility的设置项中参考以下代码,添加上去就能轻松实现。这个时候,我们的导航栏和状态栏都被隐藏了,只有在拉下的情况会出现,过一段时间又会自动地缩回去。
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
.or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
.or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
.or(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
.or(View.SYSTEM_UI_FLAG_FULLSCREEN)
.or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
这样我们的沉浸式状态栏就轻松地实现好了,如果有什么不对的地方,欢迎大家指出一起探讨哦!
猜你喜欢
- 2024-09-10 全新版Jetpack进阶提升,系统性落地短视频App(完结)
- 2024-09-10 Android开发新选择:Kotlin(kotlin android开发教程)
- 2024-09-10 高兼容低成本,开箱即用的首页性能优化方式被我们找到了
- 2024-09-10 使用Kotlin实战一个BaseActivity并制作一个登录页
- 2024-09-10 Kotlin 1.2 Beta 发布,来看看新特性!
- 2024-09-10 Android自定义控件(高手级)——JOJO同款能力分析图
- 2024-09-10 Spring Boot 自定义Jackson ObjectMapper
- 2024-09-10 android studion 使用kotlin操作ListView代码量的减少
- 2024-09-10 使用Kotlin实战一个Android架构中的MVP模式,简单实用
- 2024-09-10 用Kotlin开发了一个Android应用,我只用了8小时
你 发表评论:
欢迎- 06-23MySQL合集-mysql5.7及mysql8的一些特性
- 06-23MySQL CREATE TABLE 简单设计模板交流
- 06-23MYSQL表设计规范(mysql设计表注意事项)
- 06-23MySQL数据库入门(四)数据类型简介
- 06-23数据丢失?别慌!MySQL备份恢复攻略
- 06-23MySQL设计规范(mysql 设计)
- 06-23MySQL数据实时增量同步到Elasticsearch
- 06-23MySQL 避坑指南之隐式数据类型转换
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)