Android动画

   Android动画,一个神奇好玩的东西。Android中主要有两种动画:逐帧动画和补间动画。
逐帧动画:就是我们事先准备好的静态图片,按照一定的顺序和时间逐个播放,形成一个动画效果。
补间动画:提供淡入淡出,缩放效果,移动效果,旋转,来实现多种多样的动画效果。
这篇博文我们主要介绍补间动画。
创建补间动画的步骤如下:
1.创建一个AnimationSet 类
2.创建一个淡入淡出,缩放效果,移动效果,旋转,其中一个效果的Animation类,并设置相应的属性
3.将Animation添加到AnimationSet中
4.启动动画

具体的看下面代码

<span style="font-family:FangSong_GB2312;font-size:18px;">public void click(View view) {
		switch (view.getId()) {
		case R.id.alpha:
			//创建一个AnimationSet 类
			
			AnimationSet animationSet = new AnimationSet(true);
			//创建一个淡入淡出效果的Animation,第一个参数为原始透明度,第二个为最终透明度
			AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
			//设置动画持续时间
			alphaAnimation.setDuration(1000);
			//将anmation添加到animationset中
			animationSet.addAnimation(alphaAnimation);
			//启动动画
			imageView.startAnimation(animationSet);


			break;
		case R.id.scale: 		//实现缩放动画
			AnimationSet animationSet2 = new AnimationSet(true);
			/*
			 * 参数1:x轴的初始值
			 * 参数2:x轴缩放后的值
			 * 参数3:y轴的初始值
			 * 参数4:y轴缩放后的值
			 * 参数5:x轴的参数类型
			 * 参数6:x轴的值。表示以x轴的0.5作为x轴的长度
			 * 参数7:y轴的参数类型
			 * 参数8:y轴的值。表示以y轴的0.5作为y轴的长度
			 */
			
			ScaleAnimation scaleAnimation = new ScaleAnimation(0, 0.1f, 0,
					0.1f, AnimationSet.RELATIVE_TO_SELF, 0.5f,
					AnimationSet.RELATIVE_TO_SELF, 0.5f);
			scaleAnimation.setDuration(1000);
			animationSet2.addAnimation(scaleAnimation);
			imageView.startAnimation(animationSet2);


			break;
		case R.id.rotate:		//实现翻转动画
			AnimationSet animationSet3 = new AnimationSet(true);
			/*
			 * 参数1:初始角度
			 * 参数2:翻转后的角度
			 * 参数3:x轴的参数类型
			 * 参数4:x轴的值。表示以x轴的0.5作为x轴的长度
			 * 参数5:y轴的参数类型
			 * 参数6:y轴的值。表示以y轴的0.5作为y轴的长度
			 * 
			 */
			RotateAnimation rotateAnimation = new RotateAnimation(0, 180,
					AnimationSet.RELATIVE_TO_SELF, 0.5f,
					AnimationSet.RELATIVE_TO_SELF, 0.5f);
			rotateAnimation.setDuration(1000);
			animationSet3.addAnimation(rotateAnimation);
			imageView.startAnimation(animationSet3);
			break;
		case R.id.translate:		//实现移动动画
			AnimationSet animationSet4 = new AnimationSet(true);
			/*
			 * AnimationSet.RELATIVE_TO_SELF  这个标识相对自己的坐标
			 * 参数1,2:x轴的开始位置
			 * 参数3,4:y轴的开始位置
			 * 参数5,6:x轴的结束位置
			 * 参数7,8:y轴的结束位置
			 */
			TranslateAnimation translateAnimation = new TranslateAnimation(
					AnimationSet.RELATIVE_TO_SELF, 0f,
					AnimationSet.RELATIVE_TO_SELF, 0.5f,
					AnimationSet.RELATIVE_TO_SELF, 0f,
					AnimationSet.RELATIVE_TO_SELF, 0.5f);
			translateAnimation.setDuration(1000);
			//设置是否保持动画结束后组件的状态
			translateAnimation.setFillAfter(true);
			animationSet4.addAnimation(translateAnimation);
			imageView.startAnimation(animationSet4);


			break;</span>

 
  代码中的注释应该很清楚,大家将就点认真看。Android的动画还有下面几个属性


// 设置是否保持动画结束后组件的状态
translateAnimation.setFillAfter(true);
//设置动画结束后,控件是否回到初始状态
translateAnimation.setFillBefore(true);
//设置动画执行之前的等待时间
translateAnimation.setStartOffset(1000);
//设置动画重复执行的次数

translateAnimation.setRepeatCount(1);


这些属性是所有Android动画都公用的


以上实现了在java代码中实现Android的动画,但你会发现这样的代码是维护性和可重用性很差。所以,我们goole大神还为什么提供了另一种方法,就在在xml中定义好动画的执行过程,然后直接调用就可以啦。
步骤如下:
1.在res文件下新建一个anim文件夹
2.创建一个xml文件,选择动画,然后选择哪一种动画
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<alpha
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="1000"
    android:startOffset="500"
    xmlns:android="http://schemas.android.com/apk/res/android">
    


</alpha>
java中调用xml,代码如下
Animation animation=AnimationUtils.loadAnimation(this, R.anim.alpha);
imageView.startAnimation(animation);

创建动画属性和java时是一样的。这里就不一一举例,

下面说一下Android动画的监听,贴代码



                alphaanimation.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {  //动画启动时执行

                        Toast.makeText(MainActivity.this,"animationStart",Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {      //动画结束时执行

                        Toast.makeText(MainActivity.this,"onAnimationEnd",Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {      //动画运行时执行

                        Toast.makeText(MainActivity.this,"onAnimationRepeat",Toast.LENGTH_SHORT).show();

                    }

这里设置setAnimationListener()方法,并重写三个方法。


入门动画就到这里啦,动画的知识还有很多,大家也可以到这里去学习更多知识点击打开链接
我们明天见





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值