Android动画,一个神奇好玩的东西。Android中主要有两种动画:逐帧动画和补间动画。
逐帧动画:就是我们事先准备好的静态图片,按照一定的顺序和时间逐个播放,形成一个动画效果。
补间动画:提供淡入淡出,缩放效果,移动效果,旋转,来实现多种多样的动画效果。
这篇博文我们主要介绍补间动画。
创建补间动画的步骤如下:
1.创建一个AnimationSet 类
2.创建一个淡入淡出,缩放效果,移动效果,旋转,其中一个效果的Animation类,并设置相应的属性
3.将Animation添加到AnimationSet中
4.启动动画
代码中的注释应该很清楚,大家将就点认真看。Android的动画还有下面几个属性
// 设置是否保持动画结束后组件的状态
translateAnimation.setFillAfter(true);
//设置动画结束后,控件是否回到初始状态
translateAnimation.setFillBefore(true);
//设置动画执行之前的等待时间
translateAnimation.setStartOffset(1000);
//设置动画重复执行的次数
以上实现了在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);
这里设置setAnimationListener()方法,并重写三个方法。
入门动画就到这里啦,动画的知识还有很多,大家也可以到这里去学习更多知识点击打开链接
我们明天见
逐帧动画:就是我们事先准备好的静态图片,按照一定的顺序和时间逐个播放,形成一个动画效果。
补间动画:提供淡入淡出,缩放效果,移动效果,旋转,来实现多种多样的动画效果。
这篇博文我们主要介绍补间动画。
创建补间动画的步骤如下:
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()方法,并重写三个方法。
入门动画就到这里啦,动画的知识还有很多,大家也可以到这里去学习更多知识点击打开链接
我们明天见