Android系统提供三种动画:帧动画、补间动画和属性动画。这里分析总结属性动画。

属性动画相较帧动画和补间动画更强大,帧动画和补间动画只能应用于 View 及其子类,而属性动画可以修改任何对象的属性值,属性值可在指定的一段时间内自动改变,根据对象属性值的变化进而实现更复杂的动画。

1.属性动画的常用设置

//设置属性动画持续时间
animator.setDuration(2000);
//设置属性插值器
animator.setInterpolator(new AccelerateInterpolator());
//设置属性动画重复播放次数
animator.setRepeatCount(0);
//设置属性动画延时播放的时间
animator.setStartDelay(0);
//设置属性动画估值器,用于控制最终属性值(API22)
animator.setCurrentFraction(0.5f);
//设置当前播放时间,其值在Duration范围之内
animator.setCurrentPlayTime(1000);
//设置属性动画估值器,用于控制最终属性值
animator.setEvaluator(new IntEvaluator());
//设置属性动画监听
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {Log.i(TAG, animation.getAnimatedValue() + "");//}
});

2.ValueAnimator

ValueAnimator 提供了一个简单的计时引擎,用于执行动画时根据设置的时长以及其他属相完成动画值的计算,然后就可以将动画值设置到合适的目标对象上,使用的插值器默认时 AccelerateDecelerateInterpolator,表示动画开始和结束时较慢,中间加速完成动画。

在 ValueAnimator 中已经内部处理了一些估值器 IntEvaluator 和 FloatEvaluator,也就是说如果使用的时 ofInt 和 ofFloat 方法作为动画的属性值,那么 ValueAnimator 会自动处理 int 和 float 值的变化。ValueAnimator 可以使用代码创建,也可以使用 xml 创建。示例:

ValueAnimator animator = ObjectAnimator.ofFloat(0, 100);
animator.setDuration(2000);
animator.start();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float progress = (float) animation.getAnimatedValue();mProgressBar.setProgress((int) progress);}
});

3.ObjectAnimator 是 ValueAnimator 的子类,可在目标对象上支持动画属性的设置,在其构造方法中通过参数指定目标对象以及所对应动画属性的名称,然后会相应的执行对应的动画属性的 setter 方法来最终完成动画的执行,也就是说属性动画 ObjectAnimator 最终调用目标对象的 setter 方法完成目标对象属性值的变化,然后相应的改变目标对象的属性,从而实现目标对象的动画效果。以透明度为例:

private void alpha(){ObjectAnimator animator = ObjectAnimator.ofFloat(ivImage,"alpha",1f,0,2f);animator.setDuration(3000);//其他属性动画设置//...animator.start();
}

平移、旋转、缩放动画实现方式与上面一样:

Alpha 控制View的透明度

TranslationX控制X方向的位移

TranslationY控制Y方向的位移

ScaleX控制X方向的缩放倍数

ScaleY控制Y方向的缩放倍数

Rotation控制以屏幕方向为轴的旋转度数

RotationX控制以X轴为轴的旋转度数

RotationY控制以Y轴为轴的旋转度数

4.插值器和估值器

插值器(TimeInterpolator) 表示的是整个动画期间动画的变化规律,如加速、减速等。

Android 内置许多插值器,这些插值器基本涵盖了实际开发中的大部分情况。如果内置的插值器不满足需求,也可以自定义插值器。

估值器(TypeEvaluator)表示的是在整个动画期间各时刻属性值的具体变化。

Android动画之属性动画相关推荐

  1. Android Property Animation属性动画:scale缩放动画(4)

     Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...

  2. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  3. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72876871 1.什么是Fragment 片段,碎片 * 从Android 3.0 ...

  4. android 属性动画还原,属性动画和补间动画

    动画的分类 今天我们将会探讨动画的学习,Android的动画分成三类 1. Tween Animation(补间动画.视图动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即 ...

  5. Android开发笔记(九十六)集合动画与属性动画

    集合动画AnimationSet 补间动画有四大类:透明度动画AlphaAnimation.旋转动画RotateAnimation.缩放动画ScaleAnimation.平移动画TranslateAn ...

  6. Android -- 三种动画(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画 一:帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单,总 ...

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

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

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

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

  9. Android旋转动画(属性动画)转一圈卡顿一次的问题

    旋转动画(属性动画)转一圈卡顿一次的原因是,旋转动画的旋转速度不是一直不变的,是有加速过程的,所以解决这个问题就可以让旋转动画一直转,不停顿就需要添加动画插值器 RotateAnimation rot ...

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

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

最新文章

  1. python教学反思_Python第3课if教学反思:准备充分承上启下,优化内容模式初显
  2. php mac 常用代码,在Mac上使用PHP exec shell(代码签名)重新分配IPA
  3. 2020-07-16 CVPR2020 VL论文讨论(5) 笔记
  4. python自动导出数据脚本_利用python生成一个导出数据库的bat脚本文件的方法
  5. 【APICloud系列|33】移动应用软件加固步骤,适合所有的安卓应用市场
  6. linux 29900端口,USB2.0接口100M以太网芯片SR9900(A)的应用
  7. $arr['id'],$arr[id]的区别
  8. centos 卸载vsftp
  9. Rabbitmq专题:rabbitmq消费端如何做限流?
  10. 比特币价格跌破3万美元登上彭博社头版
  11. IDEA设置主题样式
  12. 达梦V8归档备份参数NOT BACKED UP的使用
  13. linux系统scsi硬盘,Linux系统SCSI磁盘管理全攻略(一)
  14. linux操作系统c语言编程,Linux操作系统下C语言编程从零开始
  15. Java17线程进程
  16. SSM项目————整合微信支付
  17. Java中代码点与代码单元(转)
  18. 【python期末设计(节选)】志愿者管理系统开发包含源码软件工程
  19. java需求设计文档模板下载_设计Java
  20. 高通平台开发环境搭建、编译、烧录(android5.1以上系统)

热门文章

  1. mysql truncate语句_MySQL truncate table语句
  2. Javashop电商系统7.1.5源码发布
  3. 梯度下降与一元线性回归
  4. office 2010
  5. 3D打印发光字与传统工艺发光字的区别具体有哪些?
  6. mysql怎么下载_mysql下载安装使用教程
  7. VSCode安装教程(超详细)
  8. 互联网协议入门(网络分层)
  9. 常用函数的傅里叶变换汇总
  10. c++求100以内素数