先来个简单的动画

先上图。没图心慌慌
这里写图片描述

有时候看到一个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图片看看吧。

如图所以会创建一个图片

左边material 风格图片,右边本地SVG图片,没有本地,给UI要

我选择material,然后点击你的图片,finish就好

然后会出来一个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"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值