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动画之补间动画相关推荐

  1. Android动画之帧动画和补间动画

    Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...

  2. Android之帧动画与补间动画的使用

    前言 在日常开发中,我们有时候需要一些好看的动画效果,这时可以充分利用Android提供的这几种动画来实现, Android提供了3种类型的动画: 补间动画:补间动画可以应用于View,让你可以定义一 ...

  3. Android逐帧动画和补间动画

    本篇博客来看一下Android中的逐帧动画和补间动画. 一.逐帧动画 逐帧动画也叫Drawable Animation. 在Android中实现逐帧动画,就是由设计师给出一系列状态不断变化的图片, 开 ...

  4. Android动画(帧动画、补间动画、属性动画)讲解

    Android动画(帧动画.补间动画.属性动画)讲解 首先我们来看看啥是帧动画.补间动画.属性动画. 介绍: 帧动画:是一种常见的动画形式(Frame By Frame),其原理是在"连续的 ...

  5. Android帧动画特点,Android帧动画和补间动画看这篇足够了

    原标题:Android帧动画和补间动画看这篇足够了 距离活动开始还有两天,重庆的开发者们赶快报名行动起来吧! 写在前面 为了使用户的交互更加流畅自然,动画也就成为了一个应用中必不可少的元素之一.在 A ...

  6. android属性动画替换逐帧动画,Android 动画:逐帧动画,补间动画和属性动画

    1.三种动画的介绍 现在 Android 常用的动画有三种: 逐帧动画,补间动画和属性动画: FrameAnimation(逐帧动画):将多张图片组合起来进行播放,很多 App 的加载动画是采用这种方 ...

  7. android 帧动画张数限制,Android帧动画和补间动画看这篇足够了

    原标题:Android帧动画和补间动画看这篇足够了 写在前面 为了使用户的交互更加流畅自然,动画也就成为了一个应用中必不可少的元素之一.在 Android 中常用的动画分类无外乎三种,最早的帧动画.补 ...

  8. Android帧动画和补间动画

    目录 1.帧动画 (帧动画的资源文件,放在drawable文件夹下) 1.创建一个项目 2.导入资源, 将图片资源放入 mipmap 文件夹下 3.编写资源文件 在drawable文件夹创建 4.在x ...

  9. Android动画攻略—帧动画、补间动画、属性动画

    前言 动画时Android开发中使用频率比较高的功能. 对Android提供的补间动画,帧动画以及属性动画做出归纳总结. 目录 1. 帧动画 帧动画总体实现比较简单,其实现本身是实现一个图片集的连续播 ...

最新文章

  1. 2022-2028年中国游泳健身行业市场研究及前瞻分析报告
  2. Comparator 和 Comparable
  3. MySql第几行到第几行语句
  4. python代码翻译-10 行代码,Python 教你自制屏幕翻译工具,有逼格!!
  5. 在html中如何使用span,如何在HTML和CSS中使用DIV和span?
  6. uml类图工具_三款超级轻量化制图工具!每个不超过2MB,堪称神器!
  7. 30个Oracle语句优化规则详解(1)
  8. 使用numpy的小惊喜
  9. 路由:vue-router
  10. 类成员指针——偏移量
  11. 推荐使用MEF降低耦合(2)
  12. 添加类库引用后,命名空间出错的解决方案
  13. BeyondCompare3密钥过期如何处理。
  14. vs C++实现Socket通信、添加ws2_32.lib 动态链接库
  15. PPT使用技巧 + 快捷键
  16. Word文档如何去掉最后一页的页码且不会影响其它页的页码
  17. 关于小米笔记本Pro内部风扇异响问题解决方法
  18. 漫谈CRM体系化建设1 – CRM与客户管理综述
  19. 获取非行内样式代码封装
  20. putty下载链接提供

热门文章

  1. 山东大学软件学院2019软件测试考试回忆
  2. 南阳市有没有达内PHP班,南阳达内php培训班怎么样
  3. Oracle导出数据并以指定分隔符来分隔字段
  4. python解包exe_解包 Python 3 的安装包
  5. 个人云 私有云 公有云_个人云简介
  6. 步步分析爬取知乎用户头像
  7. asp.net 母版页使用详解
  8. 北京市乡镇界街道shp数据arcgis软件乡镇编码2020年(预览图)
  9. java classes14下载_windows x64 Java/JDK 14下载 jdk-14.0.1_windows-x64_bin.zip官方免安装版
  10. 无纸化、自动化、智能化|WMS系统升级你的仓储管理模式