android图标高复用无失真优化的新方式VectorAsset

Android5.0后终于添加了Vector,这无疑是对android的icon的又一次比较大的变革。也许有人听说过但是没有用过。今天就给大家比较粗糙的讲解下Vector是个什么玩意。
Android从起步到现在,不知道大家发现没有,APK包越来越大,无用代码无用资源原来越多。当然google也在做各种各样的优化。这里总结几种比较常见的优化策略;
aapt:
实现的图片高保真压缩,这个比较常用,有可能你用了,但是你自己都不知道。
通过边缘拉伸实现的图片不失真,可以减少一定量的图片体积。
androidstudio自带混淆功能:
混淆功能会将代码压缩,同样可以实现apk体积减小,而且还提供的移动无用资源这个功能就比较鸡肋了。现在的android开发者用的反射都会比较常见了,不像之前用的少,再去用无用资源去除或者lint这种功能,就可能会把反射对应的资源给排除掉,得不偿失。
还有不少优化的方法就不一一累述了。今天主要讲的是VectorAsset这个神奇的功能。

一、VectorAsset的使用条件:

满足以下几个条件建议使用:
1、简单图像,例如常见icon类图片,推荐阿里巴巴矢量图库类似的svg图片
2、纯色背景类图片
3、复用率高且不同位置需求图片大小不同的
4、复用率高且颜色需求变化的

二、VectorAsset优缺点:

1.因为vector是以xml格式存储的,所以可以把vector理解为一个非图片格式的文件,vector与png/jpg/gif/svg等格式相比较体积小很多
2.正因为vector是以xml格式存储,所以有非常高的可维护性,甚至技术大牛们可以去实现动态生成vector的功能也不是不可能。当然我这种小虾米就差点了,目前办不了
3.android提供了vector的一系列方法,可以实现对vector的位置、大小、颜色的维护方法,这个功能也是我看中vector的最主要原因之一,举例来说,做一个点击效果,可能你需要两张png,一个是未点击状态,一个是已点击状态。vector只需要一个xml和一个判断方法就可以解决了,甚至不用去写selector文件。具体操作后边介绍。
4.基于vector的可控制性高,可以实现不同大小颜色的图片做到最大的复用程度。
VectorAsset具体用法及注意事项:

三、 先说具体用法吧,这个还是大家比较关心的。

我以阿里巴巴矢量图库随意找的一张图片做的:
1、vector只支持svg的矢量图片或者psd文件(个人不建议使用psd文件,具体原因自己研究,比较坑)
首先将svg图片导入drawable文件夹,导入方法可不是直接复制粘贴,仔细看:
step1:

这里写图片描述
drawable右键选择VectorAsset
step2:
这里写图片描述
step3:
第三部就简单了,一步步确定finish,这样一个可用的图片就添加到了程序当中。
step4:
具体使用如果没有特殊调整,和普通的图片是一样的用法,无需特殊处理。android5.0以下需要做特殊处理,这个下次再分享,比较复杂,个人建议5.0以下的要么直接不支持,要么就放弃用这个吧,因为即使5.0支持了,还是会有坑,个人没有研究太深,有人研究的比较深入解决的,望分享!!!
这里要说的就是比较有意思的功能:
imgSvg.setImageDrawable(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_folder));
getDrawable()方法已经弃用,建议用新的替代方法。
Drawable myTasksDrawable = imgSvg.getDrawable();
myTasksDrawable.setTint(Color.BLUE);
两行代码就可以实现图片的颜色修改

四、特别注意

1、强烈建议非纯色、色条复杂图片尽量不要使用该方法,造成的结果可能会是文件更大,反而起不到瘦身的效果
2、psd不建议使用,svg建议使用
以上就是对于VectorAsset的基本用法,技术含量不高,含金量高一点的具体还有位置改变,嵌入textview,动态修改图形等等,下一篇再讲

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值