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

矢量图(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只是 缩小图标而不会放大图标,从而避免由于放大图标导致的图标模糊的问题
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 矢量图SVG简介 Android 5.0系统中引入了 VectorDrawable 来支持矢量图(SVG),...
    登高且赋阅读 7,482评论 2 15
  • 效果图: Github链接:https://github.com/boycy815/PinchImageView ...
    CQ_TYL阅读 6,666评论 0 0
  • 手势图片控件 PinchImageView 点击图片框架 photoView packagecom.example...
    Ztufu阅读 4,062评论 0 1
  • 最近在研究图片加载库,趁机找时间学习下ImageView的源码,探究下它内部机制,同时学习下View的封装思想。 ...
    guobin_xu阅读 10,711评论 0 13
  • 天空 扔下一大片一大片的白 独自轰轰烈烈 蓝出无边的孤独 深邃如海洋 苍穹下 是止不住的寂静蔓延 一条孤船 静坐于...
    金指尖的花园阅读 1,495评论 0 3