系统图标形状设置和初始化-爱代码爱编程
时间: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