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

本文详细介绍了Android中动画的基本概念,包括Interpolator的作用及不同类型的Interpolator如何影响动画速度,同时讲解了scale、rotate、alpha和translate四种基本动画类型的具体参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头:(当然最后以 </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) {}
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值