您的位置:首页 > 其它

【Tween Animation 变化动画】

2016-07-11 16:56 351 查看
   1、  本文要完成的任务有: 

(1) 缩放动画

(2) 透明度动画

(3) 旋转动画

(4) 位移动画

(5) 组合动画1  (动画监听器实现)

(6) 组合动画2 (set标签 + startOffset属性 实现)

(7) 闪烁动画

(8) 抖动动画

  2、 效果展示gif图如下:










  3、 务具体实现:

动画xml定义文件全部都放在res/anim目录下。

(1) 缩放动画

scale.xml动画文件定义:

<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" >
</scale>
<!-- duration 动画持续时间
fromXScale x方向上开始时候的大小
fromYScale y方向上开始时候的大小
pivotX  x方向上缩放的中心位置
pivotY  y方向上缩放的中心位置
toXScale x方向上结束时候的大小
toYScale y方向上结束时候的大小-->


Activity中获取动画对象然后播放代码:

//缩放动画
animation = AnimationUtils.loadAnimation(this, R.anim.scale); //获取动画对象
if(animation != null){
//开始播放动画
imageView.startAnimation(animation);
}


(2) 透明度动画

alpha.xml动画文件定义:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0">
</alpha>
<!-- duration 动画持续时间
fromAlpha 开始透明度值
toAlpha 结束透明度值  -->

Activity中获取动画对象代码:

//透明度动画
animation = AnimationUtils.loadAnimation(this, R.anim.alpha); //获取动画对象


(3) 旋转动画

rotate.xml动画文件定义:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%">
</rotate>
<!-- duration 动画持续时间
fromDegrees 起始时的角度
toDegrees 结束时的角度
pivotX  x方向上旋转的中心位置
pivotY  y方向上旋转的中心位置-->


Activity中获取动画对象代码:

//旋转动画
animation = AnimationUtils.loadAnimation(this, R.anim.rotate); //获取动画对象


(4) 位移动画

translate.xml动画文件定义:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromXDelta="10"
android:fromYDelta="10"
android:toXDelta="100"
android:toYDelta="100">
</translate>
<!-- duration 动画持续时长
fromXDelta 起始x相对坐标
fromYDelta 起始y相对坐标
toXDelta 结束x相对坐标
toYDelta 结束y相对坐标-->

Activity中获取动画对象代码:

//位移动画
animation = AnimationUtils.loadAnimation(this, R.anim.translate); //获取动画对象


(5) 组合动画1

动画组合原理:两个独立动画,为第一个动画设置动画监听器,当监听到第一个动画播放完毕,开始播放第二个动画。

代码如下:

//组合动画1
//动画组合原理:两个独立动画,为第一个动画设置动画监听器,当监听到第一个动画播放完毕,开始播放第二个动画
Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.translate);
final Animation animation2 = AnimationUtils.loadAnimation(this, R.anim.rotate);
//为animation1设置动画监听器
animation1.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationEnd(Animation animation) {
//当动画播放结束时
imageView.startAnimation(animation2);

}
});
//开始播放第一个动画
imageView.startAnimation(animation1);


(6) 组合动画2

动画组合原理:动画本身xml定义就是一个组合动画,所以只用直接播放组合动画即可。

comb_anim2.xml组合动画文件定义:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate
android:duration="2000"
android:fromXDelta="10"
android:fromYDelta="10"
android:toXDelta="100"
android:toYDelta="100">
</translate>

<rotate
android:duration="2000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="+360"
android:startOffset="3000">
</rotate>
<!-- 注意这里一定要设置startOffset,并且要大于第一个动画播放的时间,不然两个动画会一起播放 -->
</set>

Activity中获取动画对象代码:

//组合动画2
//动画组合原理:动画本身xml定义就是一个组合动画,所以只用直接播放组合动画即可
animation = AnimationUtils.loadAnimation(this, R.anim.comb_anim2); //获取动画对象


(7) 闪烁动画

实现方式没有去定义动画xml文件,而是用等效的java代码来实现:

//闪烁动画
//定义一个透明度变化动画,从透明到不透明
AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
//定义动画播放时长
alphaAnimation.setDuration(100);
//定义动画播放重复次数
alphaAnimation.setRepeatCount(16);
//定义动画正序重复还是倒序重复 REVERSE为倒序重复 RESTART为正序重复
alphaAnimation.setRepeatMode(Animation.REVERSE);
//开始播放动画,就是闪烁的效果
imageView.startAnimation(alphaAnimation);


(8) 抖动动画
实现方式没有去定义动画xml文件,而是用等效的java代码来实现:

//抖动动画
//定义一个位移变化动画,从x方向的左边到右边
TranslateAnimation translateAnimation = new TranslateAnimation(-30, 30, 0, 0);
//定义动画播放时长
translateAnimation.setDuration(100);
//定义动画播放重复次数
translateAnimation.setRepeatCount(16);
//定义动画倒序重复
translateAnimation.setRepeatMode(Animation.REVERSE);
//开始播放动画
imageView.startAnimation(translateAnimation);


01_TweenAnimation变化动画Demo代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: