android 动画 返回,Android“菜单图标变返回”动画
此例用到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“菜单图标变返回”动画相关推荐
- 【笔记】css实现鼠标移入,菜单图标变叉叉
实现效果: 原: 移入: -----------------代码如下----------------- html部分: <div class="rotateChange"&g ...
- 菜单黑暗模式UI动画素材模板
黑暗模式应用设计原则 创建应用程序的黑暗模式时,不可否认,我们要遵循一些规则,否则用户体验会大大恶化. · 遵循平台准则 这是第一个,也许也是最重要的提示.Google和Apple都给出了非常完善的规 ...
- flutter 动画json_使用lottie加载json动画
先上效果图,这个是做的一个仿抖音的点赞动画: giphy.gif 众所周知,属性动画.补间动画通常只能做一些效果简单的,而做复杂的动画可采用gif图,帧动画,但是这样资源空间增大导致apk增大不小.而 ...
- android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]
http://blog.csdn.net/jj120522/article/details/8095852 示意图就不展示了,和上一节的一样,滑动菜单SlidingMenu效果如何大家都比较熟悉,在这 ...
- Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!
Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 ...
- Android RecyclerView设置分割线 / 下拉加载 / 选项菜单进行增加删除动画
首先看一下我的整个程序: 主类: package com.example.day02rk;import android.os.Bundle; import android.support.v4.con ...
- 为什么我从iOS返回Android
这是在cnBeta上面看到的一篇文章,很喜欢.(不太懂转载的规则,要是有什么不可以的请通知我,谢谢) 原文地址:http://www.cnbeta.com/articles/207891.htm 原文 ...
- Android Activity 滑动返回。支持微信滑动返回样式、横屏滑动返回、全屏滑动返回
BGASwipeBackLayout-Android 项目地址:bingoogolapple/BGASwipeBackLayout-Android 简介:Android Activity 滑动返回. ...
- Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 参考文章: (1)Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 (2)https:// ...
最新文章
- BST(binary search tree)类型题目需要用到的头文件binary_tree.h
- Linux ubuntu16.04 卸载搜狗输入法(sogoupinyin)
- C++STL中swap函数操作与内存地址改变的简析
- codeforces 1060 A
- 洛谷 P1372 又是毕业季I
- 没有人愿意把自己放在被动的位置,一切皆是有原因的
- spring security oauth2.0 实现
- python装饰器函数执行顺序_python 函数后装饰器怎么加
- 第二十四节(Java文件流,缓冲流)
- Elasticsearch 带中文分词的全文检索(分页+高亮返回)
- 油气井钻井风险预测与控制系统——需求分析
- vue 渲染函数处理slot_Vue渲染函数详解
- js-鼠标事件-拖放图片(对鼠标事件进一步加深印象)
- Unity控制物体移动旋转
- 在codesys中通过EtherCAT总线驱动IO模块
- 是不是太胖了(C语言)
- 行业话题 | 天天坐地铁,你知道BIM在地铁中的应用吗
- 【百度网盟教程】如何登陆百度网盟(1)
- springboot+mybatis的简单的入门例子
- 因特服务器协议,Internet邮件服务协议