此例用到SVG动画,其中涉及三个XML文件,分别为:Vector矢量图,objectAnimator动画,以及一个animated-vector文件将前两个文件联合起来。

1.在drawable文件夹下新建vector文件描述矢量图

android:height="200dp"

android:width="200dp"

android:viewportHeight="100"

android:viewportWidth="100">

android:name="path1"

android:strokeColor="@color/colorAccent"

android:strokeWidth="5"

android:strokeLineCap="round"

android:pathData="

M 20,80

L 50,80,80,80"/>

android:name="path2"

android:strokeColor="@color/colorAccent"

android:strokeWidth="5"

android:strokeLineCap="round"

android:pathData="

M 20,50

L 50,50,80,50"/>

android:name="path3"

android:strokeColor="@color/colorAccent"

android:strokeWidth="5"

android:strokeLineCap="round"

android:pathData="

M 20,20

L 50,20,80,20"/>

因为要改变第一条和第三条线的,只要两个点就够了,但是为了动画美观过渡更自然,我们使用三个点来描绘。其中M代表moveto:即起点坐标,L代表lineto:即后续点点到哪里,在这个动画中我们描绘了三条线,第一条:最下面一条,(20,80)到(50,80)再到(80,80)剩下两条以此类推。

2.写objectAnimator文件

在这个文件中我们需要描绘每条线的动画路径。下面是line1的动画,即最下面的动画,这个文件建立在animator文件夹中,并不是anim文件夹。

android:duration="300"

android:propertyName="pathData"

android:valueFrom="

M 20,80

L 50,80,80,80"

android:valueTo="

M 20,50

L 50,80,50,80"

android:valueType="pathType"

android:interpolator="@android:anim/linear_interpolator">

这个文件中有几个属性,我们解释一下valueFrome以及valueTo这两个关键属性:

android:valueFrom="

M 20,80

L 50,80,80,80"

表示从原来的其实位置移动到

android:valueTo="

M 20,50

L 50,80,50,80"

的位置,最下面的interpolator插值器则描绘了动画的缓冲路径。

3.建立animated-vector文件

将上述两个文件粘合在一起,从而完成动画绘制,这个文件同样建立在drawable文件夹中。

android:drawable="@drawable/svg_vecotr_1">

android:animation="@animator/anim_path1"

android:name="path1"/>

android:animation="@animator/anim_path2"

android:name="path3"/>

其中target标签中的animation就是我们vectorAnimator动画,name就是vector文件中的线条。

4.引用

在布局文件中使用android:src="@drawable/svg_1"即可,这个引用的是第三个animated-vector文件。

5.在代码中注册

首先为引用该资源的view注册点击事件,自点击事件中初始化动画:

private void animate() {

Drawable drawable = imageView.getDrawable();

if (drawable instanceof Animatable) {

((Animatable) drawable).start();

}

}

ezgif-2-a37b90817c.gif

android 动画 返回,Android“菜单图标变返回”动画相关推荐

  1. 【笔记】css实现鼠标移入,菜单图标变叉叉

    实现效果: 原: 移入: -----------------代码如下----------------- html部分: <div class="rotateChange"&g ...

  2. 菜单黑暗模式UI动画素材模板

    黑暗模式应用设计原则 创建应用程序的黑暗模式时,不可否认,我们要遵循一些规则,否则用户体验会大大恶化. · 遵循平台准则 这是第一个,也许也是最重要的提示.Google和Apple都给出了非常完善的规 ...

  3. flutter 动画json_使用lottie加载json动画

    先上效果图,这个是做的一个仿抖音的点赞动画: giphy.gif 众所周知,属性动画.补间动画通常只能做一些效果简单的,而做复杂的动画可采用gif图,帧动画,但是这样资源空间增大导致apk增大不小.而 ...

  4. android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]

    http://blog.csdn.net/jj120522/article/details/8095852 示意图就不展示了,和上一节的一样,滑动菜单SlidingMenu效果如何大家都比较熟悉,在这 ...

  5. Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!

    Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 ...

  6. Android RecyclerView设置分割线 / 下拉加载 / 选项菜单进行增加删除动画

    首先看一下我的整个程序: 主类: package com.example.day02rk;import android.os.Bundle; import android.support.v4.con ...

  7. 为什么我从iOS返回Android

    这是在cnBeta上面看到的一篇文章,很喜欢.(不太懂转载的规则,要是有什么不可以的请通知我,谢谢) 原文地址:http://www.cnbeta.com/articles/207891.htm 原文 ...

  8. Android Activity 滑动返回。支持微信滑动返回样式、横屏滑动返回、全屏滑动返回

    BGASwipeBackLayout-Android 项目地址:bingoogolapple/BGASwipeBackLayout-Android  简介:Android Activity 滑动返回. ...

  9. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误

    Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 参考文章: (1)Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 (2)https:// ...

最新文章

  1. BST(binary search tree)类型题目需要用到的头文件binary_tree.h
  2. Linux ubuntu16.04 卸载搜狗输入法(sogoupinyin)
  3. C++STL中swap函数操作与内存地址改变的简析
  4. codeforces 1060 A
  5. 洛谷 P1372 又是毕业季I
  6. 没有人愿意把自己放在被动的位置,一切皆是有原因的
  7. spring security oauth2.0 实现
  8. python装饰器函数执行顺序_python 函数后装饰器怎么加
  9. 第二十四节(Java文件流,缓冲流)
  10. Elasticsearch 带中文分词的全文检索(分页+高亮返回)
  11. 油气井钻井风险预测与控制系统——需求分析
  12. vue 渲染函数处理slot_Vue渲染函数详解
  13. js-鼠标事件-拖放图片(对鼠标事件进一步加深印象)
  14. Unity控制物体移动旋转
  15. 在codesys中通过EtherCAT总线驱动IO模块
  16. 是不是太胖了(C语言)
  17. 行业话题 | 天天坐地铁,你知道BIM在地铁中的应用吗
  18. 【百度网盟教程】如何登陆百度网盟(1)
  19. springboot+mybatis的简单的入门例子
  20. 因特服务器协议,Internet邮件服务协议

热门文章

  1. oracle数据库快照打点,Oracle数据库快照的使用
  2. 1024电商项目的邮箱验证码与图形验证码功能模块
  3. 第五章 编写主引导扇区代码
  4. $compile 手动编译
  5. 每天学点Linux命令:倒叙打印文件第二行的前100个大写字母
  6. 本来中午打算应付下随便吃点,可是连盐都没有放的辣椒炒蛋实在是令人不快...
  7. 【大数据】Hadoop入门预告版
  8. IOS开发学习记录第4天之C语言学习
  9. 汇编语言学习——第四章 第一个汇编程序
  10. 从无头单链表中删除节点