Android动画之补间动画
Android动画之补间动画
和上面一章学的帧动画不同,帧动画 是通过连续播放图片来模拟动画效果,而补间动画开发者只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐!
Andoird所支持的补间动画效果有如下这五种,或者说四种吧,第五种是前面几种的组合而已~
AlphaAnimation:透明度渐变效果,创建时许指定开始以及结束透明度,还有动画的持续 时间,透明度的变化范围(0,1),0是完全透明,1是完全不透明;对应<alpha/>
标签!
ScaleAnimation:缩放渐变效果,创建时需指定开始以及结束的缩放比,以及缩放参考点, 还有动画的持续时间;对应<scale/>
标签!
TranslateAnimation:位移渐变效果,创建时指定起始以及结束位置,并指定动画的持续 时间即可;对应<translate/>
标签!
RotateAnimation:旋转渐变效果,创建时指定动画起始以及结束的旋转角度,以及动画 持续时间和旋转的轴心;对应<rotate/>
标签
AnimationSet:组合渐变,就是前面多种渐变的组合,对应<set/>
标签
在开始讲解各种动画的用法之前,我们先要来讲解一个东西:Interpolator
用来控制动画的变化速度,可以理解成动画渲染器,当然我们也可以自己实现Interpolator 接口,自行来控制动画的变化速度,而Android中已经为我们提供了五个可供选择的实现类:
LinearInterpolator:动画以均匀的速度改变
AccelerateInterpolator:在动画开始的地方改变速度较慢,然后开始加速
AccelerateDecelerateInterpolator:在动画开始、结束的地方改变速度较慢,中间时加速
CycleInterpolator:动画循环播放特定次数,变化速度按正弦曲线改变: Math.sin(2 * mCycles * Math.PI * input)
DecelerateInterpolator:在动画开始的地方改变速度较快,然后开始减速
AnticipateInterpolator:反向,先向相反方向改变一段再加速播放
AnticipateOvershootInterpolator:开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator: 跳跃,快到目的值时值会跳跃,如目的值100,后面的值可能依次为85,77,70,80,90,100
OvershottInterpolator:回弹,最后超出目的值然后缓慢改变到目的值
而这个东东,我们一般是在写动画xml文件时会用到,属性是:android:interpolator, 而上面对应的值是:@android:anim/linear_interpolator,其实就是驼峰命名法变下划线而已 AccelerateDecelerateInterpolator对应:@android:anim/accelerate_decelerate_interpolator!
TranslateAnimation(位移渐变)
属性解释:
fromXDelta/fromYDelta:动画起始位置的X/Y坐标
toXDelta/toYDelta:动画结束位置的X/Y坐标
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXDelta="0" android:toXDelta="320" android:fromYDelta="0" android:toYDelta="0" android:duration="2000"/>
ScaleAnimation(缩放渐变)
属性解释:
fromXScale/fromYScale:沿着X轴/Y轴缩放的起始比例
toXScale/toYScale:沿着X轴/Y轴缩放的结束比例
pivotX/pivotY:缩放的中轴点X/Y坐标,即距离自身左边缘的位置,比如50%就是以图像的 中心为中轴点
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromXScale="0.2" android:toXScale="1.5" android:fromYScale="0.2" android:toYScale="1.5" android:pivotX="50%" android:pivotY="50%" android:duration="2000"/>
RotateAnimation(旋转渐变)
属性解释:
fromDegrees/toDegrees:旋转的起始/结束角度
repeatCount:旋转的次数,默认值为0,代表一次,假如是其他值,比如3,则旋转4次 另外,值为-1或者infinite时,表示动画永不停止
repeatMode:设置重复模式,默认restart,但只有当repeatCount大于0或者infinite或-1时 才有效。还可以设置成reverse,表示偶数次显示动画时会做方向相反的运动!
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromDegrees="0" android:toDegrees="360" android:duration="1000" android:repeatCount="1" android:repeatMode="reverse"/>
AlphaAnimation(透明度渐变)
属性解释:
fromAlpha :起始透明度
toAlpha:结束透明度
透明度的范围为:0-1,完全透明-完全不透明
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="2000"/>
AnimationSet(组合渐变)
非常简单,就是前面几个动画组合到一起而已~
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:shareInterpolator="true" > <scale android:duration="2000" android:fromXScale="0.2" android:fromYScale="0.2" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.5" android:toYScale="1.5" /> <rotate android:duration="1000" android:fromDegrees="0" android:repeatCount="1" android:repeatMode="reverse" android:toDegrees="360" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="320" android:toYDelta="0" /> <alpha android:duration="2000" android:fromAlpha="1.0" android:toAlpha="0.1" /> </set>
然后就是代码中调用了
btn_1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_textview);tv_1.startAnimation(animation);}});
当然,还可以添加对动画的监听事件:
//动画的事件监听animation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束}@Overridepublic void onAnimationRepeat(Animation animation) {//动画重复}});
Android动画之补间动画相关推荐
- Android动画之帧动画和补间动画
Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...
- Android之帧动画与补间动画的使用
前言 在日常开发中,我们有时候需要一些好看的动画效果,这时可以充分利用Android提供的这几种动画来实现, Android提供了3种类型的动画: 补间动画:补间动画可以应用于View,让你可以定义一 ...
- Android逐帧动画和补间动画
本篇博客来看一下Android中的逐帧动画和补间动画. 一.逐帧动画 逐帧动画也叫Drawable Animation. 在Android中实现逐帧动画,就是由设计师给出一系列状态不断变化的图片, 开 ...
- Android动画(帧动画、补间动画、属性动画)讲解
Android动画(帧动画.补间动画.属性动画)讲解 首先我们来看看啥是帧动画.补间动画.属性动画. 介绍: 帧动画:是一种常见的动画形式(Frame By Frame),其原理是在"连续的 ...
- Android帧动画特点,Android帧动画和补间动画看这篇足够了
原标题:Android帧动画和补间动画看这篇足够了 距离活动开始还有两天,重庆的开发者们赶快报名行动起来吧! 写在前面 为了使用户的交互更加流畅自然,动画也就成为了一个应用中必不可少的元素之一.在 A ...
- android属性动画替换逐帧动画,Android 动画:逐帧动画,补间动画和属性动画
1.三种动画的介绍 现在 Android 常用的动画有三种: 逐帧动画,补间动画和属性动画: FrameAnimation(逐帧动画):将多张图片组合起来进行播放,很多 App 的加载动画是采用这种方 ...
- android 帧动画张数限制,Android帧动画和补间动画看这篇足够了
原标题:Android帧动画和补间动画看这篇足够了 写在前面 为了使用户的交互更加流畅自然,动画也就成为了一个应用中必不可少的元素之一.在 Android 中常用的动画分类无外乎三种,最早的帧动画.补 ...
- Android帧动画和补间动画
目录 1.帧动画 (帧动画的资源文件,放在drawable文件夹下) 1.创建一个项目 2.导入资源, 将图片资源放入 mipmap 文件夹下 3.编写资源文件 在drawable文件夹创建 4.在x ...
- Android动画攻略—帧动画、补间动画、属性动画
前言 动画时Android开发中使用频率比较高的功能. 对Android提供的补间动画,帧动画以及属性动画做出归纳总结. 目录 1. 帧动画 帧动画总体实现比较简单,其实现本身是实现一个图片集的连续播 ...
最新文章
- 2022-2028年中国游泳健身行业市场研究及前瞻分析报告
- Comparator 和 Comparable
- MySql第几行到第几行语句
- python代码翻译-10 行代码,Python 教你自制屏幕翻译工具,有逼格!!
- 在html中如何使用span,如何在HTML和CSS中使用DIV和span?
- uml类图工具_三款超级轻量化制图工具!每个不超过2MB,堪称神器!
- 30个Oracle语句优化规则详解(1)
- 使用numpy的小惊喜
- 路由:vue-router
- 类成员指针——偏移量
- 推荐使用MEF降低耦合(2)
- 添加类库引用后,命名空间出错的解决方案
- BeyondCompare3密钥过期如何处理。
- vs C++实现Socket通信、添加ws2_32.lib 动态链接库
- PPT使用技巧 + 快捷键
- Word文档如何去掉最后一页的页码且不会影响其它页的页码
- 关于小米笔记本Pro内部风扇异响问题解决方法
- 漫谈CRM体系化建设1 – CRM与客户管理综述
- 获取非行内样式代码封装
- putty下载链接提供
热门文章
- 山东大学软件学院2019软件测试考试回忆
- 南阳市有没有达内PHP班,南阳达内php培训班怎么样
- Oracle导出数据并以指定分隔符来分隔字段
- python解包exe_解包 Python 3 的安装包
- 个人云 私有云 公有云_个人云简介
- 步步分析爬取知乎用户头像
- asp.net 母版页使用详解
- 北京市乡镇界街道shp数据arcgis软件乡镇编码2020年(预览图)
- java classes14下载_windows x64 Java/JDK 14下载 jdk-14.0.1_windows-x64_bin.zip官方免安装版
- 无纸化、自动化、智能化|WMS系统升级你的仓储管理模式