系统图标形状设置和初始化

时间:2020/11/05
之前公司不允许csdn,笔记写在其它地方。最近整理过来

1、图标形状Overlay的主要代码

图标形状的主要代码在frameworks/base/services/core/java/com/android/server/om

frameworks/base/core/java/android/content/om/OverlayManager.java
setEnabled
setEnabledExclusiveInCategory
↑↓aidl
frameworks/base/services/core/java/com/android/server/om/OverlayManagerService.java
↓
↓真正的实现
frameworks/base/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
updateOverlaysForUser
setEnabled
setEnabledExclusiveInCategory

2、设置默认形状

frameworks/base/core/res/res/values/config.xml
形状和bool值要一起改,cts会检测图标形状是否是圆形

<bool name="config_useRoundIcon">true</bool>
<string name="config_icon_mask" translatable="false">"M50 0C77.6 0 100 22.4 100 50C100 77.6 77.6 100 50 100C22.4 100 0 77.6 0 50C0 22.4 22.4 0 50 0Z"</string>

3、遇到的bug

设置图标形状圆形,重启之后变为方形
/vendor/partner_gms/products/gms.mk中,又设置的默认覆盖导致

展讯 android11

#PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
#    ro.boot.vendor.overlay.theme=com.android.internal.systemui.navbar.threebutton;com.android.theme.icon.squircle

mtk android11
/device/mediatek/system/common/ago/device.mk中

ro.boot.vendor.overlay.theme=com.android.theme.icon.roundedrect

总结
发现framework设置图标形状未生效时, 全局搜一下当前图标形状的包名 或者 ro.boot.vendor.overlay.theme

你可能感兴趣的:(launcher,#,launcherR,frameworks,android,java)