先上图。没图心慌慌
有时候看到一个app的下载包在这个版本的时候还是13M多,然而突然下个版本更新升级的时候就成了3M多了。
难道程序猿偷工减料了,天杀的。肯定不是,偷工减料就会有bug。那到底是咋回事呢?
我有点莫名,但并没有深究,因为我们现在的apk就13M左右,不大也不小刚刚好。等遇到瘦身问题了在解决呗。
目测还是有一大部分和我一样的懒程序猿的,遇到问题在解决呗,防患于未然,切,谁来的那么多的精力啊。
然而,昨天接触了一个叫做vectorDrawable的东西。
唉~又是特么的么有见过的东西,还好,都麻木了。你不看,不学学的话,也许角落里的那个银分分钟就超过你了,分分钟就KO你了。
所以还是看看吧,学学吧,虽然学习的过程是痛苦的,但是当你会了一个东西的时候484有种天下的一切都是朕的的赶脚。哈哈,玩笑,玩笑而已。程序员不开玩笑的话我就在不知道什么的行业的人该开玩笑了。一定要学会开玩笑,这样才能放松心情,愉悦情绪,激活大脑,瞬间变聪明了。。艾玛,扯远了。。
话说这个叫做vectorDrawable的东西呢,到底是个啥玩意儿呢。
这个东西呢也是图片的一种。
平时用到的图片格式会有.jpg .png .gif等等的。这些图片都是日常任务啊有木有。
但是这些格式的图片有时候会有一点小问题,第一个图片有点大,第二个图片在缩放的时候容易失真。
所以SVG来代替是非常ok的,SVG是啥?SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。
概念真麻烦,真官方。我喜欢接地气的东西。就是用SVG有两个好处,第一图片资源小,第二缩放不失真。但也有一个坏处,就是哪三种格式的图片是CPU通过对像素点的绘制而画出来的,而这个SVG呢就是CPU去计算之后绘制出来的。肯定会影响性能一些。
话说一阴一阳之谓道,优势与劣势并存,去选择需要扬长避短,避重就轻就好。
先来个SVG图片看看吧。
然后会出来一个xml文件,类似于这样
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<!--group标签-->
<!--1,适用于多个path-->
<!--2,可以使用path中所不具有的属性-->
<group android:name="left">
<path
android:fillColor="#FF000000"
android:pathData="M9.01,14L2,14v2h7.01v3L13,15l-3.99,-4v3z" />
</group>
<group android:name="right">
<path
android:fillColor="#FF000000"
android:pathData="M14.99,13v-3L22,10L22,8h-7.01L14.99,5L11,9l3.99,4z" />
</group>
</vector>
如果自己创建出来后不会是这样子,group标签的用作注释里有。
接下来,写属性动画,res下创建animator文件夹
<?xml version="1.0" encoding="utf-8"?>
<!--duration 动画时间-->
<!--repeatCount infinite 无限次重复-->
<!--repeatMode reverse 重复模式为抑制重复-->
<!--propertyName translateX 属性动画X轴平移 -->
<!--valueFrom="0" 从0开始平移-->
<!--valueTo="10" 平移到10-->
<!--valueType floatType 浮点型的变化类型-->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateX"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="10"
android:valueType="floatType">
</objectAnimator>
注释比较清楚,就不多说了
因为要做一个箭头左右移动的动画,所以在拷贝一份从0到-10的值的变化就好
在接下来呢,我们把动画和图片联系在一起
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/arrow">
<target
android:name="left"
android:animation="@animator/arrow_left" />
<target
android:name="right"
android:animation="@animator/arrow_right" />
</animated-vector>
这时候,基本动画就ok了
然后我们在main的Xml中去声明一下。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"