`
king_tt
  • 浏览: 2100535 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android动画详解之Tween动画

阅读更多

一个Tween动画将对于View对象的内容进行一系列简单的转换,在animation提供了所以关于Tween动画的类,主要有四个常用的类,AlphaAnimation(透明度渐变),RotateAnimation(旋转动画),ScaleAnimation(图片缩放动画),TranslateAnimation(移动动画),AnimationSet(一个动画的集合类),以下是对常用动画特效类的构造方法的作用和参数进行讲解

(1) AlphaAnimation

public AlphaAnimation(float fromAlpha, float toAlpha)

fromAlpha - 开始时候的透明度,其中1表示完全不透明,0表示完全透明的

toAlpha 结束时候的透明度

setDuration(long durationMillis) 设置动画执行的时间

setFillAfter(boolean fillAfter) 设置为true时,动画停在执行完后的效果,默认是执行完动画回到刚开始的效果

setRepeatCount(int repeatCount) 设置动画重复次数,repeatCount默认为0,即执行一次,为1时,即执行2次

setRepeatMode(int repeatMode) 设置动画重复的模式,有Animation.REVERSE和Animation.RESTART两种方式,默认为Animation.RESTART,Animation.RESTART的意思就是说比如你设置重复次数为1,当执行完第一次动画之后,回到动画开始然后执行第二次动画,而你设置Animation.REVERSE时候,比如你动画是从不透明----->透明,执行完第一次动画的时候,变为不透明,然后执行第二次动画,他就从不透明到透明,不知道大家理解我的意思了没?

我就介绍几个常用的方法,其他的动画也有上面的那些方法,然后等下介绍setInterpolator(Interpolator)方法

(2)RotateAnimation

public RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

fromDegrees 动画开始的角度

toDegrees 动画结束的角度

pivotXValue,pivotYValue 绕着旋转的中心点的X坐标和Y坐标

pivotXType,pivotYType 旋转中心点的的相对关系类型,有三种animation.absolute,animation.relative_to_self,或animation.relative_to_parent,animation.absolute绝对坐标类型,也就是相对O点的位置,animation.relative_to_self相对自己,自己视图的左上角那个点为O点位置,animation.relative_to_parent相对父视图左上角那个点为O点位置,即自己View所在的ViewGroup的位置

(3)ScaleAnimation

public ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

float fromX, float toX X轴方向从开始的大小到结束的大小

float fromY, float toY Y轴方向从开始的大小到结束的大小

 

pivotXValue,pivotYValue 绕着缩放的中心点的X坐标和Y坐标

pivotXType,pivotYType 缩放中心点的的相对关系类型,有三种animation.absolute,animation.relative_to_self,或animation.relative_to_parent,animation.absolute绝对坐标类型,也就是相对O点的位置,animation.relative_to_self相对自己,自己视图的左上角那个点为O点位置,animation.relative_to_parent相对父视图左上角那个点为O点位置,即自己View所在的ViewGroup的位置

(4)TranslateAnimation

public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

fromXType X轴上开始点相对类型

fromXValue 开始点的值

toXType X轴上结束点相对类型

toXValue,结束点的值

Y轴同理

(5)AnimationSet

这是一个动画的集合类,可以设置多个动画一起执行,比较简单,我就不多介绍了

 

interpolator的解释

interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。

 

Interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator 是基类,封装了所有 Interpolator 的共同方法,它只有一个方法,即 getInterpolation (float input),该方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation。Android 提供了几个 Interpolator 子类,实现了不同的速度曲线,如下:

 

AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变

上面介绍的是通过代码构造的动画,当然我们也能通过XML文件写动画,个人推荐使用XML文件

动画放在res下的anim下,下面我来介绍用代码生成和XML文件的方式

AlphaAnimation代码实现

 

//构造透明变化动画
			Animation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
			//设置动画执行时间
			alphaAnimation.setDuration(2000);
			//设置动画重复方式
			alphaAnimation.setRepeatMode(Animation.REVERSE);
			//设置动画重复次数
			alphaAnimation.setRepeatCount(5);
			//设置动画变化率
			alphaAnimation.setInterpolator(new AccelerateInterpolator());

AlphaAnimationXML实现

 

 

<?xml version="1.0" encoding="utf-8"?>
<alpha	xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="2000"
    android:repeatCount="5"
    android:repeatMode="reverse"
    android:interpolator="@android:anim/accelerate_interpolator" />

通过AnimationUtils.loadAnimation(this, R.anim.alpha)就能拿到动画了

 


RotateAnimation代码实现

 

Animation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
			rotateAnimation.setDuration(2000);
			rotateAnimation.setRepeatMode(Animation.RESTART);
			rotateAnimation.setRepeatCount(5);
			rotateAnimation.setInterpolator(new LinearInterpolator());

RotateAnimation XML实现

 

 

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromDegrees="0"
  android:toDegrees="360"
  android:pivotX="50%"
  android:pivotY="50%"
  android:duration="2000"
  android:repeatCount="5"
  android:repeatMode="reverse"
  android:interpolator="@android:anim/linear_interpolator">
</rotate>

 

值得注意的地方是android:pivotX="50%",android:pivotY="50%" 当相对自己的是要加"%",相对父容器就不要加“%",这里就这个比较重要

 

RotateAnimation动画可以自定义圆形进度条,给个例子吧,用的是XML文件定义的

 

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/loading"
    android:duration="1000"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50.0%"
    android:pivotY="50.0%"
    android:repeatCount="infinite" />

 

其他两种就自行实现吧,相信大家看了介绍,实现另外两种不是很困难,Tween动画就介绍到这里了,写的很乱,希望您提出宝贵的意见和建议,谢谢!不说了,吃饭去了!


分享到:
评论

相关推荐

    android tween动画代码示例及详解

    Android tween动画代码实现,包含alpha、scale、translate、rotate,都是动态代码实现,里面有详细的注释

    Android动画框架详解

    Android 平台提供了一套完整的...本文是第一部分原理篇,主要分析 Tween 动画的实现原理, 最后简单介绍在 Android 中如何通过播放 Gif 文件来实现动画。第二部分实例篇将在原理篇的基础上,向您展示一个动画实例的实现

    详解Android动画之TweenAnimation

    前面讲了动画中的Frame动画,今天就来详细讲解一下Tween动画的使用。同样,在开始实例演示之前,先引用官方文档中的一段话:Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的这么一种转换过程,我们成为...

    Android Tween Animation动画效果详解

    Android Tween Animation动画的使用demo,以及自定义动画,原理解析,相关博客: http://blog.csdn.net/w18756901575/article/details/53081551

    Android动画之渐变动画(Tween Animation)详解 (渐变、缩放、位移、旋转)

    本文实例讲述了Android动画之渐变动画(Tween Animation)。分享给大家供大家参考,具体如下: Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、...

    Android动画之补间动画(Tween Animation)实例详解

    前面讲了《Android动画之逐帧动画(Frame Animation)》,今天就来详细讲解一下Tween动画的使用。 同样,在开始实例演示之前,先引用官方文档中的一段话: Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的...

    Android基础知识之tween动画效果

    Android中一共提供了两种动画,其一便是tween动画,tween动画通过对view的内容进行一系列的图像变换(包括平移,缩放,旋转,改变透明度)来实现动画效果,动画效果的定义可以使用xml,也可以使用编码来实现。...

    Android动画之补间动画(Tween Animation)基础学习

    之前说过了在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画)。渐变动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转等)产生动画效果。帧动画则是...

    Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍

    主要介绍Android中如何使用rotate实现图片不停旋转的效果。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame 动画,即顺序播放...

    Android控件Tween动画(补间动画)实现方法示例

    Android动画中的Tween动画:是把控件对象不断的进行图像变化来产生旋转、平移、放缩和渐变等动画效果。 /** * 控件Tween动画 * * @description: * @author ldm * @date 2016-6-22 下午5:26:24 */ public ...

    Android实现动画效果详解

    主要介绍了Android实现动画效果详解,目前Android平台提供了Tween动画和Frame动画,实现这两类动画有两种方式:一种使用XML文件(文件放在res/anim),一种直接代码搞定,需要的朋友可以参考下

    Android编程中Tween动画和Frame动画实例分析

    本文实例讲述了Android编程中Tween动画和Frame动画实现方法。分享给大家供大家参考,具体如下: Animation主要有两种动画模式:Tween动画和Frame动画 Tween动画由四种类型组成 alpha 渐变透明度动画效果 ...

    Android动画 实现开关按钮动画(属性动画之平移动画)实例代码

    Android动画 实现开关按钮动画(属性动画之平移动画),最近做项目,根据项目需求,有一个这样的功能,实现类似开关的动画效果,经过自己琢磨及上网查找资料,终于解决了,这里就记录下:  在Android里面,一些炫酷...

    浅谈Android中视图动画的属性与使用

    Android动画主要包括视图动画和属性动画,视图动画包括Tween动画和Frame动画,Tween动画又包括渐变动画、平移动画、缩放动画、旋转动画。 Tween动画的基本属性  目标 View;  时常 duration;  开始状态 fromXXX...

Global site tag (gtag.js) - Google Analytics