在做项目的时候,自定义时发现设置壁纸时,部分界面的字体颜色和控件颜色随壁纸的颜色变:
原因:
android12新增加特殊,增加了monet(莫耐)的功能:
Android 12基于壁纸的主题设置工具“Monet”图片大曝光:Android 12即将带来的全新主题设置工具可以从壁纸中选择颜色,并根据选择的颜色调整整个系统的配色,包括快捷设置、通知,还有设置菜单中的按钮和滑条等。这个新工具的代号为“Monet”.
如何禁用此功能:
systemUI中有一个FeatureFlags.java类
Frameworks/base/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.java
//判断monet是否可用:
public boolean isMonetEnabled() {
return isEnabled(Flags.MONET);
}
/**
* @param flag The {@link BooleanFlag} of interest.
* @return The value of the flag.
*/
public boolean isEnabled(BooleanFlag flag) {
return mFlagReader.isEnabled(flag);
}
Frameworks/base/packages/SystemUI/src/com/android/systemui/flags/Flags.java
//获取monet值:
public static final BooleanFlag MONET = new BooleanFlag(800, true, R.bool.flag_monet);
找到flag_monet:
Fframeworks/base/packages/SystemUI/res/values/flags.xml
<resources>
<bool name="flag_monet">true</bool>
</resources>
把flag_monet设置为false即可;