前言:又是很久没有写blog了,原本想看完《Android群英转》在来总结一下的,但是看到后面突然发现前面看过的东西都忘记了。突然发现还是要总结一下。。。。一定要总结!一定要总结!因为我发现很多以前我写过的很多代码都忘记了。。。很多需要注意的坑都要重新去看文档填补!所以一定要养成总结的习惯!这样提高会快很多!今天简单的记录一下android里面的动画吧!

Android动画分为两类:

1.View Animation(视图动画,在api1引入)View Animation又分为两类:Frame animation(幁动画) 和Tween animation (补间动画)

2.Property Animator(属性动画,在api11引入)

这两者的区别就是:

1.View Animation能做的,Property Animator也能做,View Animation做不到的,Property Animator也能做!比如修改背景颜色,比如View Animation要求使用的对象是一个View对象,而Property Animator却不需要,因为他主要修改的是对象属性。

2.View Animation交互性不好,比如你对TextView使用了动画从(0,0)点移动到(400,400),虽然视图上textView移动到了(400,400),但是textview的点击响应事件却在(0  ,0)点。关于这点大家可以试验下印象深刻点。而Property Animator却没有这个问题(因为他修改的textview的属性)。

3.Property Animator性能方面比View Animation要高一点。

主要记录下Property Animator的简单使用

Property Animator顾名思义就是修改属性的,主要是通过不断修改一个对象的属性来达到动画效果。关于Property Animator主要通过以下三个类来实现动画

1.ValueAnimator

.ObjectAnimator

3.AnimatorSet

主要介绍下ObjectAnimator的简单使用。嘎嘎。。就是简单点。。

动画无非就是rotation(旋转),scale(缩放),tranlation(移动)。(还有前面提到的修改背景颜色)

rotation(先看效果)

动画代码如下:

ObjectAnimator rotation = ObjectAnimator.ofFloat(View,"rotationY",0,360);//设置View从0度旋转360度rotation.setDuration(4000);//设置动画时长rotation.start();

看源码,只看参数。

public static ObjectAnimator ofFloat(Object target, String propertyName, float... values) {。。。}

第一个参数是动画作用的对象(以View为例,方便表达),第二个参数是View的一个“属性”名,第三个参数是一个长度可变的参数,它设置的是属性的值的变化,以上为例(0,360)指的就是”属性“从0变化到360。这里的属性为何打个引号是因为实际上他不是对象(View)的真正的属性(View里面没有rotationY属性),它实际上是通过我们前面传递进去的属性名(比如:rotationY)通过把第一个字母大写再到前面拼凑一个set(或者get)前缀得到:setRotationY(或者getRotationY)的方法名,最后通过反射调用此方法来修改(表达的不是很清楚,可以跟下源码)。这里说了第三个参数是一个可变长度的,那么我们如果设置为一个值也是可以的,但是我们的动画至少需要两个值!那么还有一个值哪来的类?我们设置的的这个值是动画开始值还是结束值类?我们还记得前面我们提到的设置属性名通过加前缀反射出方法名执行方法吗?如果我们只传递了一个值进去,那么我们第一个值(动画的开始值)就是通过getRotationY()方法获取,而动画结束值则是我们设置进入的值。

其他的一些设置

ObjectAnimator rotation = ObjectAnimator.ofFloat(mTxtTarget,"rotationY",0,360);rotation.setTarget(Object);//设置动画作用的对象rotation.setStartDelay(1000);//设置动画延时播放rotation.setInterpolator(new LinearInterpolator());//设置加速器 如果不设置则默认设置的是LinearInterpolatorrotation.setEvaluator(new FloatEvaluator());//设置求职程序(不知道如何表达。。。) ObjectAnimator.ofFloat()默认设置的是FloatEvaluator,ObjectAnimator.ofInt()默认设置的是IntEvaluator,rotation.setRepeatCount(ObjectAnimator.INFINITE);//动画重复的次数 ObjectAnimator.INFINITE:无限循环rotation.setRepeatMode(ObjectAnimator.RESTART);//动画重复执行的顺序,有两个参数可选RESTART和REVERSE!以旋转360动画重复一次为例:// 1.RESTART:我们动画开始是从0度旋转到360度,重复一次时也是从0度旋转到360度-----》0---360    0----360// 2.REVERSE:动画从0度到360度,重复一次是从360度旋转到0度------》   0-----360------0rotation.setDuration(4000);//动画时长rotation.addListener() //添加一个动画监听,这里需要添加一个AnimatorListener对象,而AnimatorListener是一个接口,我们可以直接new AnimatorListener(){},
// 但是这样的话我们就需要实现接口里面的全部方法,但是有时我们真正的项目中不需要去实现那么多方法,这样的话里面还有一个AnimatorListenerAdapter implements AnimatorListener,我们就只要
//       new AnimatorListenerAdapter(){}这样你想监听哪个方法就监听哪个,代码更加简洁。rotation.start();//开始动画

以上一些基本的设置都涉及到了,后面动画(Scale和Translation)基本就是修改属性名就好。

Scale

代码:

ObjectAnimator scale = ObjectAnimator.ofFloat(mTxtTarget,"scaleX",0,2,1);scale.setDuration(4000);scale.setInterpolator(new AccelerateInterpolator());//加速度插值器:表示越到后面变化越快scale.start();

Translation


代码:

ObjectAnimator translation = ObjectAnimator.ofFloat(mTxtTarget,"TranslationY",0,500,0);translation.setDuration(4000);translation.start();

修改背景颜色


ObjectAnimator translation = ObjectAnimator.ofInt(mTxtTarget,"backgroundColor",0xffff0000,0xff00ff00,0xff0000ff);translation.setEvaluator(new ArgbEvaluator());//起到一个颜色变化平缓过度效果translation.setDuration(4000);translation.start();

关于颜色变化这里需要提到一点就是如果我们不设置ArgEvaluator那么颜色变化是一闪一闪的变化而不是平滑的效果!
最后一个AnimatorSet,这里我就用xml来实现

首先需要在res的animator文件夹下创建xml代码如下:

<set xmlns:android="http://schemas.android.com/apk/res/android"android:ordering="sequentially"><set android:ordering="together"><objectAnimatorandroid:duration="2000"android:propertyName="rotation"android:valueFrom="0"android:valueTo="360"android:valueType="floatType" /><objectAnimatorandroid:duration="2000"android:propertyName="scaleX"android:valueFrom="0"android:valueTo="2" /><objectAnimatorandroid:duration="2000"android:propertyName="scaleY"android:valueFrom="0"android:valueTo="2" /><objectAnimatorandroid:duration="2000"android:propertyName="translationY"android:valueFrom="0"android:valueTo="400" /></set><set android:ordering="together"><objectAnimatorandroid:duration="2000"android:propertyName="rotation"android:valueFrom="360"android:valueTo="0" /><objectAnimatorandroid:duration="2000"android:propertyName="translationY"android:valueFrom="400"android:valueTo="0" /><objectAnimatorandroid:duration="2000"android:propertyName="scaleX"android:valueFrom="2"android:valueTo="1" /><objectAnimatorandroid:duration="2000"android:propertyName="scaleY"android:valueFrom="2"android:valueTo="1" /></set>
</set>

然后再代码中引用

AnimatorSet objectAnimator = (AnimatorSet) AnimatorInflater.loadAnimator(this,R.animator.animator_set);//将xml中的动画加载ObjectAnimator translation = ObjectAnimator.ofInt(mTxtTarget,"backgroundColor",0xffff0000,0xff00ff00,0xff0000ff);translation.setEvaluator(new ArgbEvaluator());translation.setDuration(4000);translation.setInterpolator(new LinearInterpolator());objectAnimator.setTarget(mTxtTarget);objectAnimator.play(translation);objectAnimator.start();

大家注意到了没?我并没有在xml中使用修改颜色backgroundColor的动画,因为在xml中无法设置Evaluator,如果在xml中做颜色变化的话那么颜色会一闪一闪的打不到我们需要的效果,在这里 建议大家以后都用代码实现 ,你们看xml中一个objectAnimator只能做一件事(只有一个valueFrom(起点)和valueTo(终点))不能像代码中可以设置多个值。总之个人感觉代码实现起来方便直观,建议大家以后都用代码实现

好了。。。说了只讲简单使用就好。哈哈。。这篇就记录这些吧。。。有理解错误的地方欢迎留言指正。。。。嘎嘎。。。

我参考的资料

1.《android群英转》--作者:徐宜生大大。。。

2.启舰的博客专栏《Animation的动画详解》

Android Animator(Android动画)相关推荐

  1. Android源码解析(一)动画篇-- Animator属性动画系统

    Android源码解析-动画篇 Android源码解析(一)动画篇-- Animator属性动画系统 Android源码解析(二)动画篇-- ObjectAnimator Android在3.0版本中 ...

  2. 『ANDROID』android animator 动画

    原文地址:android animator 动画 animator 动画 动画的作用是让UI有动感, 看上去时尚. Android中动画分两种方式: 一种方式是补间动画Tween Animation, ...

  3. Android动画特效之Animator属性动画实现

    Android动画特效之自定义view: Android动画特效之自定义view_Angel-杭州的博客-CSDN博客_android view 设置动画 由于上期Android动画特效之自定义Vie ...

  4. Android Animator(动画)类 详解

    Android Animator动画类 详解 动画分为3种 ValueAnimator类 ObjectAnimator类 AnimatorSet类 Animator的addListener()方法(监 ...

  5. android开发之动画的详解 整理资料 Android开发程序小冰整理

    2019独角兽企业重金招聘Python工程师标准>>> /** * 作者:David Zheng on 2015/11/7 15:38 * *  网站:http://www.93se ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. Android下的动画

    ------你需要努力,你还没资格休息----- Android下的动画有三种: tween补间动画.frame帧动画.property属性动画(Android3.0后提出来的).补间动画: Tran ...

  8. Android 卡片翻转动画效果

    转载请标明出处:http://blog.csdn.net/android_mnbvcxz/article/details/78570594 Android 卡片翻转动画效果 前言 前端时间开发一款应用 ...

  9. [Android]Fragment自定义动画、动画监听以及兼容性包使用

    Fragment是Android在API 11之后加入的一个组件,对提高Android开发中的布局合理性和布局效率都有很大作用,尤其是在Android平板等大屏幕设备的开发中,Fragment的引入能 ...

最新文章

  1. DEBUGnbsp;设置监视点:判断变量值
  2. 3.8 注意力模型-深度学习第五课《序列模型》-Stanford吴恩达教授
  3. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
  4. 633. Sum of Square Numbers
  5. UDT协议实现分析——连接的建立
  6. mysql insert插入的3种方法
  7. html中右边框出不来,html,为什么右边框会被挡住?
  8. 图像语义分割(13)-OCNet: 用于场景解析的目标语义网络
  9. html页面自动跳转
  10. [LuoguP1360][USACP07MAR]黄金阵容均衡
  11. mysql 1067
  12. Android性能全面分析与优化方案研究—几乎是史上最全最实用的
  13. 前端工作中碰到的一些小问题总结
  14. 【BZOJ3991】【SDOI2015】寻宝游戏
  15. 年轻人不再去菜市场,互联网如何拯救菜场摊贩?
  16. 如何恢复删除好友的微信聊天记录?iPhone手机高效操作方法
  17. Ubuntu18.04 搜狗输入法安装(史上最好用的输入法安装方法)
  18. 2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
  19. 怎么锻炼孩子的想象力创造力_家长培养孩子想象力创造力的训练游戏
  20. 2020年了,跨境电商收款有哪几种方式?

热门文章

  1. 如何用python获取文献_[python]eutilities获取文献题录
  2. docker-compose设置redis密码
  3. Java 之 assert (断言)
  4. 银河麒麟V10 SP2 server 搭建 ntp服务端
  5. 软件测试设计——按类型划分
  6. 何为 Linux 内核开发,怎么学好 Linux 内核?
  7. Deep RGB-D Saliency Detection with Depth-Sensitive Attention and Automatic Multi-Modal Fusion论文笔记
  8. 郑州计算机网络安全协会,过滤王文档教材网吧使用手册(网吧)-郑州市计算机网络安全协会.doc...
  9. 解析eBay BASE模式、去哪儿及蘑菇街分布式架构
  10. 小米盒子4S 905L成功刷入emuelec系统