您的位置:首页 > 移动开发 > Android开发

android动画xml文件详细实例说明

2012-02-22 16:37 357 查看
头:(当然最后以 </set>结束)

<set xmlns:android="http://schemas.android.com/apk/res/android"

 android:interpolator="@android:anim/accelerate_interpolator"

 android:fillAfter="true"

 >

//=================================================================================================================

说明:

其中:xmlns:android="http://schemas.android.com/apk/res/android" 必须要,其余的可以任选

android:interpolator="@android:anim/decelerate_interpolator"是什么含义,文档里说的也不太清楚,其实很简单,看下面:

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

加速,减速,重复等。用通俗的一点的话理解就是:动画的进度使用 Interpolator 控制。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        在动画的以均匀的速率改变

对于 LinearInterpolator ,变化率是个常数,即 f (x) = x.

public float getInterpolation(float input) {

return input;

}

Interpolator其他的几个子类,也都是按照特定的算法,实现了对变化率。还可以定义自己的 Interpolator 子类,实现抛物线、自由落体

等物理效果。

android:fillAfter="true": 这个其实有两个,另一个是android:fillBefore="true"  这个标记的意思是说:当动画结束后停留在第一帧还是

 停留在最后一帧

//=======================================================================================================================

 

动画设置:

1、<scale  ..../>:这个是比例变化,主要意思就是缩放动画

 其中的项有:

 android:fromXScale="1.0"   //X方向开始比例,1.0表示本来大小

 android:toXScale="2.0"     //X方向结束比列,2.0表示原本大小的两倍

 android:fromYScale="1.0"   //Y方向同X方向是一样的 

 android:toYScale="2.0"

 android:pivotX="50%" //X方向缩放中心点,也就是这个点不动,两边缩放

 android:pivotY="50%" //Y方向缩放中心点,也就是这个点不动,两边缩放

 android:duration="2000" //动画持续时间(单位毫秒)

 android:startOffset="2000"   //动画延迟多长时间开始

2、<rotate ..../>: 旋转动画

 其中的项有:

 android:fromDegrees="0"   //旋转动画开始角度

 android:toDegrees="+360"   //旋转动画结束角度,记住符号 + 表示顺时针,- 表示逆时针

 android:pivotX="50%" //X方向缩放中心点,以这点为圆心旋转

 android:pivotY="50%" //Y方向缩放中心点,以这点为圆心旋转

 android:duration="3000"  //动画持续时间(单位毫秒)

 android:startOffset="1000"  //动画延迟多长时间开始

3、<alpha ..../>:透明度变化

 其中的项有:

 android:fromAlpha="1.0" //开始时的透明度,1 表示不透明,0表示完全透明

 android:toAlpha="0.2" //结束时的透明度,1 表示不透明,0表示完全透明

 android:duration="2500"  //动画持续时间(单位毫秒)

 android:startOffset="2000"  //动画延迟多长时间开始

4、<translate..../>: 移动动画

 其中的项有:

 android:fromXDelta="320"  //移动动画初始X坐标位置

 android:toXDelta="0"    //移动到X坐标什么位置

 android:fromYDelta="480"  //移动动画初始Y坐标位置

 android:toYDelta="0"  //移动到Y坐标什么位置

 android:duration="10000"    //动画持续时间(单位毫秒)

 android:startOffset="2000"  //动画延迟多长时间开始

 

动画的使用:这里比如用一个 logo 为例,logo是一个TextView ,这里有一个动画文件

welcome.xml;我们将这个动画添加到logo中执行

 logo = (TextView)findViewById(R.id.logo);

 AnimationSet animation = (AnimationSet) AnimationUtils.loadAnimation(getApplicationContext(), R.anim.welcome);

 //如果xml文件中没有android:interpolator="@android:anim/accelerate_interpolator",可以不要以下两句

 Interpolator i = new AccelerateDecelerateInterpolator();

 animation.setInterpolator(i);

 //==============================================

 logo.startAnimation(animation);//开始动画

 //添加动画事件监听器

 animation.setAnimationListener(new AnimationListener() {

  public void onAnimationStart(Animation animation) {}

  public void onAnimationRepeat(Animation animation) {}

  @Override

  public void onAnimationEnd(Animation animation) {}

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息