Android最新状态栏处理介绍

 更新时间:2021年12月17日 10:13:48   作者:朱 江  
大家好,本篇文章主要讲的是Android最新状态栏处理介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

前言

Android 中状态栏的处理无非两种,一种是显示隐藏状态栏,另外一种是状态栏字体颜色的修改,之前的写法都已经废弃了,来看看最新的版本中应该如何处理吧。

显示隐藏状态栏

先来看下之前的写法吧:

/**
 * 设置透明状态栏
 */
fun Activity.transparentStatusBars() {
    val option = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    val vis = window.decorView.systemUiVisibility
    window.decorView.systemUiVisibility = option or vis
    window.statusBarColor = Color.TRANSPARENT
}

这样看着是没有什么问题,但是。。。来看下代码的截图吧:

在这里插入图片描述

发现了没有,咱们一直使用的方法其实都废弃了。。。点击去看下描述:

@deprecated SystemUiVisibility flags are deprecated. Use {@link WindowInsetsController}

可以看到官方让使用 WindowInsetsController 来替换之前的写法,其实 WindowInsetsController 是一个接口,可以通过 ViewCompat.getWindowInsetsController 来进行实例化,来看下如何使用吧:

/**
 * 设置透明状态栏
 */
fun Activity.transparentStatusBar() {
    val controller = ViewCompat.getWindowInsetsController(window.decorView)
    // 隐藏状态栏
    controller?.hide(statusBars())
    // 设置状态栏颜色为透明
    window.statusBarColor = Color.TRANSPARENT
}

状态栏字体颜色修改

同上面一样,先来看下之前的代码:

/**
 * 状态栏反色
 */
fun Activity.setAndroidNativeLightStatusBars() {
    val decor = window.decorView
    if (!isDarkMode()) {
        decor.systemUiVisibility =
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
    } else {
        decor.systemUiVisibility =
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    }
}

同样看着没有问题,来看下代码的截图吧:

在这里插入图片描述

和上面设置显示隐藏状态栏一样,同样是使用 WindowInsetsController 来替换之前的写法:

/**
 * 状态栏反色
 */
fun Activity.setAndroidNativeLightStatusBar() {
    val controller = ViewCompat.getWindowInsetsController(window.decorView)
    controller?.isAppearanceLightStatusBars = !isDarkMode()
}

上面中的 isDarkMode 是我写的一个扩展方法,用来判断当前是否为深色模式,来看下如何实现的吧:

/**
 * 获取当前是否为深色模式
 * 深色模式的值为:0x21
 * 浅色模式的值为:0x11
 * @return true 为是深色模式   false为不是深色模式
 */
fun Context.isDarkMode(): Boolean {
    return resources.configuration.uiMode == 0x21
}

输入法显示与否

其实官方现在都让咱们使用 WindowInsetsController 来处理状态栏或者导航栏,甚至能处理输入法的显示与否,只需要更换 hide 和 show 的类型即可:

/**
 * 隐藏ime
 */
fun Activity.hideIme() {
    val controller = ViewCompat.getWindowInsetsController(window.decorView)
    controller?.hide(ime())
}

/**
 * 显示ime
 */
fun Activity.showIme() {
    val controller = ViewCompat.getWindowInsetsController(window.decorView)
    controller?.show(ime())
}

总结

说了这么多还没放 Github 地址呢:https://github.com/zhujiang521/PlayWeather

到此这篇关于Android最新状态栏处理介绍的文章就介绍到这了,更多相关Android状态栏处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android编程实现微信分享信息的方法

    Android编程实现微信分享信息的方法

    这篇文章主要介绍了Android编程实现微信分享信息的方法,实例分析了Android官方demo示例,讲述了Android微信分享功能的具体实现技巧,需要的朋友可以参考下
    2015-10-10
  • 解决Android SearchView不显示搜索icon的问题

    解决Android SearchView不显示搜索icon的问题

    这篇文章主要介绍了解决Android SearchView不显示搜索icon问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Android onTouchEvent事件中onTouch方法返回值(介绍)

    Android onTouchEvent事件中onTouch方法返回值(介绍)

    下面小编就为大家带来一篇Android onTouchEvent事件中onTouch方法返回值(介绍)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 详解Android短信的发送和广播接收实现短信的监听

    详解Android短信的发送和广播接收实现短信的监听

    本篇文章主要介绍了Android短信的发送和广播接收实现短信的监听,可以实现短信收发,有兴趣的可以了解一下。
    2016-11-11
  • Android 静默安装和智能安装的实现方法

    Android 静默安装和智能安装的实现方法

    静默安装就是无声无息的在后台安装apk,没有任何界面提示。智能安装就是有安装界面,但全部是自动的,不需要用户去点击。下面脚本之家小编给大家介绍下Android 静默安装和智能安装的实现方法,感兴趣的朋友一起看看吧
    2018-01-01
  • Android通过overScrollBy实现下拉视差特效

    Android通过overScrollBy实现下拉视差特效

    这篇文章主要为大家详细介绍了Android通过overScrollBy实现下拉视差特效,实现精彩的阻尼效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android 获取系统语言的实例(兼容7.0)

    Android 获取系统语言的实例(兼容7.0)

    下面小编就为大家带来一篇Android 获取系统语言的实例(兼容7.0)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Ionic2创建App启动页左右滑动欢迎界面

    Ionic2创建App启动页左右滑动欢迎界面

    使用Ionic2创建应用非常简单,只需在V1的命令后跟上--v2即可.这篇文章主要介绍了Ionic2创建App启动页左右滑动欢迎界面的相关资料,需要的朋友可以参考下
    2016-10-10
  • Android Toast实现全屏显示

    Android Toast实现全屏显示

    这篇文章主要为大家详细介绍了Android Toast实现全屏显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android开发利器之pidcat安装方式

    Android开发利器之pidcat安装方式

    pidcat 是Android届JakeWharton大神开发的一款命令行工具,堪称Android开发利器,它能方便Android程序猿捕获日志,过滤日志,定位程序问题,超级好用。这篇文章给大家介绍了Android开发利器之pidcat,需要的朋友可以参考下
    2019-05-05

最新评论