Android 沉浸式状态栏

这篇具有很好参考价值的文章主要介绍了Android 沉浸式状态栏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

过时的API
  //设置默认隐藏虚拟按键,虚拟按键显示后为半透明
    protected open fun hideNavigationBarAndFullScreen() {
        val flags: Int
        // This work only for android 4.4+
        flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // This work only for android 4.4+
            // hide navigation bar permanently in android activity
            // touch the screen, the navigation bar will not show
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) //虚拟按键透明
            (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav
                    // bar
                    or View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    or View.SYSTEM_UI_FLAG_IMMERSIVE)

            //            flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            //                    | View.SYSTEM_UI_FLAG_IMMERSIVE
            //                    | View.SYSTEM_UI_FLAG_FULLSCREEN;
        } else {
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        }
        window.decorView.systemUiVisibility = flags
    }

上面这一大堆,全都是过时的api,当然也能用

新的方法
theme
  <style name="Goscam_AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/white</item>
        <item name="colorPrimaryDark">@color/white</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:textDirection">locale</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <item name="android:windowLightStatusBar">true</item>
    </style>

theme是必不可少的

window
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
            window.isNavigationBarContrastEnforced = false
        }
        window.statusBarColor = Color.TRANSPARENT
        window.navigationBarColor = Color.TRANSPARENT
        WindowCompat.setDecorFitsSystemWindows(window, true)

设置状态栏颜色,设置底部导航栏颜色

setDecorFitsSystemWindows

函数就是用来替换过时的函数 setSystemUiVisibility

setDecorfitsSystemWindows的解释

/**
     * Sets whether the decor view should fit root-level content views for
     * {@link WindowInsetsCompat}.
     * <p>
     * If set to {@code false}, the framework will not fit the content view to the insets and will
     * just pass through the {@link WindowInsetsCompat} to the content view.
     * </p>
     * <p>
     * Please note: using the {@link View#setSystemUiVisibility(int)} API in your app can
     * conflict with this method. Please discontinue use of {@link View#setSystemUiVisibility(int)}.
     * </p>
     *
     * @param window                 The current window.
     * @param decorFitsSystemWindows Whether the decor view should fit root-level content views for
     *                               insets.
     */
    public static void setDecorFitsSystemWindows(@NonNull Window window,
            final boolean decorFitsSystemWindows) {
        if (Build.VERSION.SDK_INT >= 30) {
            Api30Impl.setDecorFitsSystemWindows(window, decorFitsSystemWindows);
        } else if (Build.VERSION.SDK_INT >= 16) {
            Api16Impl.setDecorFitsSystemWindows(window, decorFitsSystemWindows);
        }
    }

可以看到函数内部已经做了版本适配

效果

Android 沉浸式状态栏,androidAndroid 沉浸式状态栏,android

分别是有导航栏和无导航栏的沉浸式效果文章来源地址https://www.toymoban.com/news/detail-832185.html

到了这里,关于Android 沉浸式状态栏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 沉浸式状态栏的实现以及布局重叠的适配(Kotlin)

    本文章分以下内容: 沉浸式状态栏的实现 沉浸式导航栏的实现 适配实现沉浸式状态栏后导致的布局偏移 其他常见问题 该方法用于表示内容是否超出至状态栏和底部导航栏显示,false表明超出。(这也就我们实现沉浸式后需要做适配的原因) 注意:当使用setDecorFitsSystemWind

    2024年02月04日
    浏览(45)
  • Android沉浸式实现(记录)

    沉浸式先看效果 直接上代码 Android manifest文件 布局文件 Java MainActivity.class文件 注意点

    2024年02月11日
    浏览(90)
  • 提升你的Android开发技能:从AR/VR沉浸到UI设计和故障排除

    虚拟现实(VR)和增强现实(AR)是新兴技术,为各个行业带来了许多新的机会。教育、游戏、医疗等领域也不例外。这些技术可以用于创造更现实的体验,增强学生和患者的参与度和记忆力,同时也可以为游戏玩家提供更丰富的游戏体验。 在教育领域,AR/VR技术可以为学生提

    2024年02月09日
    浏览(35)
  • 【Flutter】如何完成一个透明沉浸式状态栏

    之前遇到的一个需求需要做一个透明的沉浸式状态栏,中间遇到一些问题,记录下来,给有需要的小伙伴指指路。 默认的状态栏,大多有系统自带UI,很多时候看起来跟我们的app不协调。 修改main.dart

    2024年02月01日
    浏览(52)
  • Android 监听网络状态变化

    此篇存在的主要意义在于解决用户使用app中网络状态发生了变化,需要我们去动态监听网络连接状态(有网、无网)、网络类型 (包括wifi、移动网络 - 3G、4G等等) 门前授课 关于网络状态的监听,主要是基于 Android 广播 - BroadcaseReceiver组件 ~ 同时关于广播的注册方面,从An

    2024年02月10日
    浏览(46)
  • Android 蓝牙状态的监听

    客户在使用我公司的Flutter插件时,要求有一个蓝牙与设备重连的功能,我用公司提供的Android SDK只能实现超出和进入蓝牙范围进行重连,但是无法在蓝牙打开进行重连,这不得不让我使用Android手写一个广播监听。 1. 添加权限 2. 创建一个类继承 BroadcastReceiver 3. 动态注册和注销

    2024年02月10日
    浏览(42)
  • Android 网络状态判断

    1、获取网络信息,首先需要获取权限 2.1我们通过ConnectivityManager可以获取状态,但是我们需要考虑到Android版本不同获取方式不同。 2.1.1hasCapability可以判断网络是否连接,常用参数如下:  NetworkCapabilities.NET_CAPABILITY_INTERNET:判断是否连上网 NetworkCapabilities.NET_CAPABILITY_VALIDATED: 判

    2024年03月13日
    浏览(77)
  • android - fragment 数据丢失?状态丢失?

    最佳答案 一些状态丢失的例子: 1.  假设您有一个按钮和一个 TextView 。在代码中,你已经定义了初始值为 0 的整数 i,它通过单击按钮递增 1,并且它的值显示在 TextView 中。假设你已经按下按钮 5 次,那么 textview 将被设置为 0。也就是说  Integer 在屏幕变化时丢失了它的值 。

    2024年02月10日
    浏览(57)
  • Android13 wifi状态问题分析

    场景; 设置wif 默认开关属性: 系统升级后,wifi 默认设置属性无效。 原因: 多个地方存在定义默认wifi开关状态的定义。 解决方法: 可能是配置文件,有overlay,一般是在 vendor 下面有 WifiOverlay的情况,或者全局查找,使用命令查找: 看看系统源码哪里还会设置默认状态的

    2024年02月01日
    浏览(34)
  • Android studio进入手机调试状态

    首先usb插入电脑 手机打开开发者模式 进入 点击 就会在你的页面显示了

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包