【Tween Animation 变化动画】

   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代码下载



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值