Android 12如何使锁屏界面状态栏ICON显示与桌面状态栏保持一致

本文介绍了Android 12在锁屏界面如何保持状态栏ICON与桌面状态栏显示一致的原理。核心逻辑在于CollapsedStatusBarFragment.java的adjustDisableFlags()方法,该方法在StatusBar初始化和显示过程中通过CommandQueue控制ICON的隐藏。为实现显示一致性,关键在于避免调整特定FLAG。开发者可根据需求调整相关代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.相关类

  • CollapsedStatusBarFragment.java
  • StatusBar.java

2.原生隐藏控制逻辑
Android12 在锁屏界面开启时,状态栏显示电池电量,SIM状态和网络状态,隐藏掉了时间和通知等的显示(PanelView这些都会显示)
那么它是如何控制的呢?
在CollapsedStatusBarFragment.java中有一些flag可以控制,核心控制逻辑在adjustDisableFlags()方法中:

protected int adjustDisableFlags(int state) {
   
        boolean headsUpVisible = mStatusBarComponent.headsUpShouldBeVisible();
        if (headsUpVisible) {
   
            state |= DISABLE_CLOCK;
        }
		//下面的三个Flag就可以控制相关ICON显示
        if (!mKeyguardStateController.isLaunchTransitionFadingAway()
                && !mKeyguardStateController.isKeyguardFadingAway()
                && shouldHideNotificationIcons()
                && !(mStatusBarStateController.getState() == StatusBarState.KEYGUARD
                        && headsUpVisible)) {
   
            state |= DISABLE_NOTIFICATION_ICONS;
            state |= DISABLE_SYSTEM_INFO;
            state |= DISABLE_CLOCK;
        }


        if (mNetworkController != null && EncryptionHelper.IS_DATA_ENCRYPTED) {
   
            if (mNetworkController.hasEmergencyCryptKeeperText()) {
   
                state |= DISABLE_NOTIFICATION_ICONS;
            }
            if (!mNetworkController.isRadioOn()) {
   
                state |= DISABLE_SYSTEM_INFO;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值