android圆形图标显示不全,Android 9.0 Adaptive Icon 圆形图标剪切不全问题(上下左右部分被裁减)...

本文详细分析了Android 9.0中Adaptive Icon圆形图标显示不全的问题,通过跟踪代码发现AdaptiveDrawable的更新掩码区域导致图标被裁切。经过尝试调整缩放比例和修改onBoundsChange方法来调整Rect大小,成功解决了图标被裁切的问题。

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

一、继上一篇讲过设置圆形图标为默认后,发现圆形图标四周有被裁减的问题,如下图:

009a8f22542e504e31bdb3a08df022f0.png

二、开始怀疑是launcher3中的图标设置大小出了问题,但是通过修改 launcher3中device_profiles.xml中的配置,如:

将iconSize改小,发现并不能解决问题,依然会有被剪切的情况。由此可以排除是Launcher3的问题了。

三、通过进一步跟中代码发现AdaptiveIcon的生成机制,是通过AdaptiveDrawable来解析xml文件,所以把重点放在AdaptiveDrawable上,frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java,

通过分析代码,发现里面有个方法,updateMaskBoundsInternal ,大概意思就是更新掩码区域,具体代码如下:

private void updateMaskBoundsInternal(Rect b) {

mMaskMatrix.setScale(b.width() / MASK_SIZE, b.height() / MASK_SIZE);

sMask.transform(mMaskMatrix, mMask);

if (mMaskBitmap == null || mMaskBitmap.getWidth() != b.wid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值