XML 的定义方式
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:detachWallpaper="true"
android:duration="1000"
android:fillEnabled="true"
android:fromAlpha="0.0"
android:interpolator="@android:anim/bounce_interpolator"
android:repeatCount="2"
android:repeatMode="reverse"
android:startOffset="300"
android:toAlpha="1.0"
android:zAdjustment="normal" >
<!-- android:detachWallpaper="true" -->
<!-- 设置动画是否在壁纸上运行 -->
<!-- android:repeatMode="restart" 动画从头开始 -->
<!-- android:repeatMode="reverse" 动画从结束开始 -->
<!-- 设置动画的重复模式 -->
<!-- android:repeatCount="" -->
<!-- 设置动画开重复的次数 -->
<!-- android:startOffset="300" -->
<!-- 设置动画执行的时间间隔 -->
<!--
fillBefore是指动画结束时画面停留在此动画的第一帧; 默认值为true
fillAfter是指动画结束是画面停留在此动画的最后一帧。默认值为false
<set android:fillAfter="true" android:fillBefore="false">
动画结束 停留在最后一帖
<set android:fillAfter="false" android:fillBefore="true">
动画结束停留在第一帖
-->
<!--
动画的进度使用 Interpolator 控制。Interpolator 定义了动画的变化速度,
可以实现匀速、正加速、负加速、无规则变加速等。Interpolator 是基类,封装了所有 Interpolator 的共同方法,
它只有一个方法,即 getInterpolation (float input),
-->
<!-- android:fromAlpha="0.0" 动画的起始的透明度 -->
<!-- android:toAlpha="1.0" 动画的结束时候的透明度 -->
<!-- android:interpolator="@android:anim/bounce_interpolator" -->
<!-- 动画结束的时候弹起 -->
<!-- android:interpolator="@android:anim/anticipate_overshoot_interpolator" -->
<!-- 开始的时候向后然后向前甩一定值后返回最后的值 -->
<!-- android:interpolator="@android:anim/anticipate_interpolator" -->
<!-- 开始的时候向后然后向前甩 -->
<!-- android:interpolator="@android:anim/accelerate_interpolator" -->
<!-- 在动画开始与结束的地方速率改变比较慢,在中间的时侯加速 -->
<!-- android:interpolator="@android:anim/cycle_interpolator" -->
<!-- 动画循环播放特定的次数,速率改变沿着正弦曲线 -->
<!-- android:interpolator="@android:anim/decelerate_interpolator" -->
<!-- 在动画开始的地方速率改变比较慢,然后开始减速 -->
<!-- android:interpolator="@android:anim/linear_interpolator" -->
<!-- 在动画的以均匀的速率改变 -->
<!-- android:interpolator="@android:anim/linear_interpolator" -->
<!-- 在动画的以均匀的速率改变 -->
</alpha>
在Java代码中使用Xml动画
//初始化渐变动画
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
//设置动画监听器
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
//当监听到动画结束时,进行一些操作
}
});
//开始播放动画 (<span style="font-family: Arial, Helvetica, sans-serif;">rootView为播放动画的控件 </span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>
rootView.startAnimation(animation);
在java代码中实现渐变的透明动画
/**
* 渐变透明动画的实现
*/
public AlphaAnimation getAlphaAnimotion() {
/**
* 创建 AlphaAnimation 对象 并指定透明渐变的范围
*/
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
/**
* 设置动画执行的时间
*/
alphaAnimation.setDuration(300);
/**
* 设置动画是否在壁纸上运行
*/
alphaAnimation.setDetachWallpaper(false);
/**
* 设置动画执行完毕后所要停留的位置
*/
alphaAnimation.setFillAfter(true);
alphaAnimation.setFillEnabled(true);
alphaAnimation.setFillBefore(true);
/**
* 设置动画为线性匀速执行
*/
alphaAnimation.setInterpolator(new LinearInterpolator());
/**
* 设置动画执行重复的次数
*/
alphaAnimation.setRepeatCount(2);
/**
* 设置动画执行重复的模式
*/
alphaAnimation.setRepeatMode(Animation.RESTART);
/**
* 设置动画的执行时间间隔为3秒
*/
alphaAnimation.setStartOffset(3000);
/**
* 设置动画开始的时间
*/
alphaAnimation.setStartTime(3000);
alphaAnimation.start();
return alphaAnimation;
}