Android使用矢量图(SVG, VectorDrawable)图标时出现锯齿状或畸形

###先简单说一下,svg格式相对于.jpg、.png具有较多优势:

1.省时间。图像与分辨率无关,收放自如,适配安卓各种机型的分辨率。
2.省空间。体积小,一般复杂图像也能在数KB搞定,图标更不在话下。

 

最近就遇到一件奇怪的bug,是这样的,项目都是用vsg的格式的图标导入使用,然后最近QA在测试机中发现 图标时出现锯齿状(畸形)这是矢量图啊,竟然会出现这样的情况。因为自己在模拟器中一切正常,但是QA又有截图,有点难以置信。(截图有空在上传。。。)

然后我自己也进行真机调试,结果刚运行进去的时候正常呀,然后我就点到里面有几个页面也显示了这个图标的时候,也正常,然后再返回到刚开始页面,发现图标时出现锯齿状(畸形),这还真复现了。

其实到这就不难发现,有多个地方都用到了同样的图标,而且它们的ImageView的大小我设置的不一样,刚进去的页面设置的30dp,还有的地方设置的40dp,这就可以理解为:一开始渲染成30dp的Drawable,然后有渲染成40dp的Drawable,当返回到先前的页面时,这就很好理解为什么之前SVG图标突然边缘呈锯齿状或变形,由于使用了相同的svg图标,即他们对应的是同一个资源ID,此时它的Drawable将被同步为刚刚渲染成40dp的Drawable。(其实,如果这个时候如果返回到先前页面,有刷新数据或执行ImagView.setImageResource()后它会显示正常)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值