一、继上一篇讲过设置圆形图标为默认后,发现圆形图标四周有被裁减的问题,如下图:
二、开始怀疑是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