为什么矢量图放大还是会模糊

矢量图(SVG)在Android系统中通过VectorDrawable来使用,但是在使用矢量图的时候还是发虚(变模糊了)

分析原因

两个代码

  1. VectorDrawable

    在 draw函数中,先获取Drawable的大小,然后根据这个尺寸来绘制图形,这样绘制的图形是不会模糊的。

    所以可以看到问题不是出现在 VectorDrawable的。

  2. ImageView

    在 configureBounds 函数中,根据View的大小来修改图片大小,但是具体如何修改的,是根据 ScaleType来决定的。

    如果 scaleType 为 ScaleType.FIT_XY ,则直接修改 Drawable 的 bounds

    而其他情况,则是由 mMatrix 来缩放 mDrawable。

    也就是说 **如果ImageView 的scaleType 不是 FIT_XY, 并且矢量图原本的尺寸不是 0(在xml中定义,是不可能为0的)的话,则ImageView会先通过矢量图原来的大小来得到一个图标,然后这个图标通过 matrix 的方式来缩放,所以最终绘制的图标就是被缩放过的图标了。而ImageView默认的 scaleType的默认值为 FIT_CENTER **

    解决方式:

    将ImageView 的 ScaleType 为 FIT_XY 即可

解决方式

  1. 将ImageView 的 ScaleType 为 FIT_XY 即可
  2. 修改矢量图中的尺寸定义,把图标的宽度和宽度修改为比较大的值,这样可以保证ImageView只是 缩小图标而不会放大图标,从而避免由于放大图标导致的图标模糊的问题

你可能感兴趣的:(为什么矢量图放大还是会模糊)