三键导航 桌面导航图标颜色

桌面三键导航图标颜色
1、更新图标颜色
private void updateNavButtonColor() {
    final ArgbEvaluator argbEvaluator = ArgbEvaluator.getInstance();
    final int sysUiNavButtonIconColorOnHome = (int) argbEvaluator.evaluate(
            mTaskbarNavButtonDarkIntensity.value,
            mLightIconColorOnHome,
            mDarkIconColorOnHome);

    // Override the color from framework if nav buttons are over an opaque Taskbar surface.
    final int iconColor = (int) argbEvaluator.evaluate(
            mOnBackgroundNavButtonColorOverrideMultiplier.value
                    * Math.max(
                            mOnTaskbarBackgroundNavButtonColorOverride.value,
                            mSlideInViewVisibleNavButtonColorOverride.value),
            sysUiNavButtonIconColorOnHome,
            mOnBackgroundIconColor);

    for (ImageView button : mAllButtons) {
        button.setImageTintList(ColorStateList.valueOf(iconColor));
        Drawable background = button.getBackground();
        if (background instanceof KeyButtonRipple) {
            ((KeyButtonRipple) background).setDarkIntensity(mTaskbarNavButtonDarkIntensity.value);
        }
    }
}

com/android/systemui/shared/navigationbar/KeyButtonRipple.java

public void setDarkIntensity(float darkIntensity) {  //按键颜色取决于darkIntensity的值,如果大于0.5则显示黑色图标,如果小于0.5则显示白色轨迹的图标
    mDark = darkIntensity >= 0.5f;
}
2、设置图标darkIntensity颜色的值

按键颜色取决于darkIntensity的值,如果大于0.5则显示黑色图标,如果小于0.5则显示白色轨迹的图标,darkIntensity的值来源于SystemUI,通过IOverviewProxy服务 aidl 传给桌面的,具体流程见下面:

com/android/systemui/shared/recents/IOverviewProxy.java#onNavButtonsDarkIntensityChanged(float darkIntensity)

com/android/quickstep/TouchInteractionService.java

public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
    executeForTaskbarManager(taskbarManager ->
            taskbarManager.onNavButtonsDarkIntensityChanged(darkIntensity));
}

com/android/launcher3/taskbar/TaskbarManager.java

public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
    mSharedState.navButtonsDarkIntensity = darkIntensity;
    if (mTaskbarActivityContext != null) {
        mTaskbarActivityContext.onNavButtonsDarkIntensityChanged(darkIntensity);
    }
}

com/android/launcher3/taskbar/TaskbarActivityContext.java

public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
    mControllers.navbarButtonsViewController.getTaskbarNavButtonDarkIntensity().updateValue(darkIntensity);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值