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日
    浏览(38)
  • Android沉浸式实现(记录)

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

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

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

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

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

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

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

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

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

    2024年03月13日
    浏览(71)
  • Android 蓝牙状态的监听

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

    2024年02月10日
    浏览(31)
  • Android状态栏布局隐藏的方法

    2024年01月23日
    浏览(30)
  • Android11屏蔽禁用下拉状态栏

    做项目软件时,会遇到客户提出屏蔽禁用下拉状态栏,其实禁用下拉状态栏主要包含两个地方 第一个地方就是解锁后进入到桌面时,在顶部和中部下拉时会将状态栏拉出来显示 第二个地方就是锁屏界面在顶部和中部下拉时会将状态栏拉出来显示 具体屏蔽禁用这两处的下拉状

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

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

    2024年02月01日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包