一个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动画,并通过具体的代码示例进行详解。 首先,我们来看`alpha`动画,它用于改变视图的透明度。Alpha动画的实现主要使用`AlphaAnimation`类。以下是一个简单的示例: ...
在Android开发中,Android SDK提供了Tween动画的支持,位于`android.view.animation`包下,包含如TranslateAnimation、ScaleAnimation、AlphaAnimation等类,分别用于处理平移、缩放和透明度的变化。 对于一个Tween...
Android 平台提供了一套完整的...本文是第一部分原理篇,主要分析 Tween 动画的实现原理, 最后简单介绍在 Android 中如何通过播放 Gif 文件来实现动画。第二部分实例篇将在原理篇的基础上,向您展示一个动画实例的实现
Android中的`Animation`类是补间动画的基础,包括`TranslateAnimation`(平移)、`RotateAnimation`(旋转)、`ScaleAnimation`(缩放)和`AlphaAnimation`(透明度变化)。 3. **属性动画(Property Animation)**...
Android Tween Animation动画的使用demo,以及自定义动画,原理解析,相关博客: http://blog.csdn.net/w18756901575/article/details/53081551
Android动画主要分为两大类:Tween动画(渐变动画)和Frame-by-frame动画(逐帧动画)。这两种动画形式能够满足开发者对于基本动画效果的需求。 #### 二、XML中的动画定义 Android动画可以通过XML文件定义,并在...
在Android开发中,动画是提升用户体验的关键因素之一。属性动画(Property Animation)是Android 3.0(API级别11)引入的一种强大的动画系统,它极大地扩展了Android平台上的动画能力,使得开发者能够实现更为复杂和...
主要介绍Android中如何使用rotate实现图片不停旋转的效果。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame 动画,即顺序播放...
在Android中,我们可以通过`<animation-list>`标签在XML中定义逐帧动画,并通过`android:oneshot="false"`保持动画循环播放。这种动画适合于实现如行走、跑动等需要连续展示多个状态的动画。 然后,我们转向Android...
本文实例讲述了Android动画之渐变动画(Tween Animation)。分享给大家供大家参考,具体如下: Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、...
在Android中,补间动画主要由`Animation`类及其子类如`TranslateAnimation`、`RotateAnimation`、`ScaleAnimation`和`AlphaAnimation`等组成,这些类分别用于处理对象的平移、旋转、缩放和透明度变化。 二、创建补...
三、属性动画详解 1. **ValueAnimator**:核心类,负责计算动画过程中各个时间点的值,然后通过`AnimatorUpdateListener`回调更新目标对象的属性。 2. **ObjectAnimator**:基于ValueAnimator的子类,用于操作对象...
在Android开发中,动画是提升用户体验和视觉效果的重要工具。本文档将详细介绍Android官方文档中提到的三种主要动画类型:帧动画、补间动画和属性动画。 **一、帧动画(Frame Animation)** 帧动画是一种基于序列...
主要介绍了Android动画之补间动画(Tween Animation)用法,结合实例形式较为详细的分析了Android补间动画的定义,原理,注意事项与相关使用技巧,需要的朋友可以参考下