Android中的帧动画与补间动画的使用

前言

在日常开发中,我们有时候需要一些好看的动画效果,这时可以充分利用Android提供的这几种动画来实现,

Android提供了3种类型的动画:

补间动画:补间动画可以应用于View,让你可以定义一系列关于位置、大小、旋转和透明度的改变,从而让

View的内容动起来。

逐帧动画:传统的基于单元格的动画,每一帧显示一个不同的Drawable。逐帧动画可以在一个View中显示,并

使用它的Canvas作为投影屏幕。

属性动画:属性动画系统几乎可以让应用程序中的任何对象动起来,它是一个框架,在一定时间内,通过使用指

定的内插技术来影响任意的对象属性。

补间动画

补间动画通过对场景中的对象不断进行图像变换(透明度、平移、缩放、旋转)产生的动画效果。针对不同的图

像变换动画,Android提供了AlphaAnimation、ScaleAnimation、RotateAnimation、TranslateAnimation等4个类的支

持。

补间动画经常用于:

(1)Activity间的转换。

(2)Activity内的布局间的转换。

(3)相同View中的不同内容见的转换。

(4)为用户提供反馈,例如提示进度、通过“晃动”输入框来说明错误或者无效的数据输入。

补间动画的分类

补间动画是使用Animation类创建的,下面的列表说明了可用的动画类型:

(1)AlphaAnimation:可以改变View的透明度。

(2)RotateAnimation:可以在XY平面上旋转选中的View。

(3)ScaleAnimation:允许缩放选中的View。

(4)TranslateAnimation:可以在屏幕上移动选中的View。

创建移动补间动画

移动是最常见的动画效果,可以通过配置动画文件或编写Java代码来实现补间动画的移动效果。补间动画文件需

要放在res\anim目录中,在动画文件中通过<translate>标签设置移动效果。首先在res\anim目录下建一个动画文件

translate_tween.xml,该文件的内容如下:

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android=""android:duration="5000"android:fromXDelta="0"android:fromYDelta="0"android:interpolator="@android:anim/accelerate_interpolator"android:toXDelta="60"android:toYDelta="60" ></translate>public class TranslateTweenActivity extends Activity {private ImageView iv_traslate;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.traslate_layout);initView();}private void initView(){iv_traslate=(ImageView) findViewById(R.id.iv_traslate);}@Overridepublic void onWindowFocusChanged(boolean hasFocus) {Animation animation=AnimationUtils.loadAnimation(this, R.anim.translate_tween);iv_traslate.startAnimation(animation);}}

运行的效果如下:

从上面的配置代码可以看出,<translate>标签中设置了6个属性,这6个属性的含义如下:

(1)android:interpolator:表示动画渲染器。通过android:interpolator属性可以设置动画渲染器,比如:

accelerate_interpolator(动画加速器)、decelerate_interpolator(动画减速器)和accelerate_decelerate_interpolator(动

画加速减速器)。动画加速器使动画在开始时速度最慢,然后逐渐加速。动画减速器使动画在开始时速度最快,然后逐

渐加速。动画加速减速器使动画在开始和结束时速度最慢,但在前半部分开始加速,在后半部分开始减速。

(2)android:fromXDelta:动画起始位置的横坐标。

(3)android:toXDelta:动画结束位置的横坐标。

(4)android:fromYDelta:动画起始位置的纵坐标。

(5)android:toXDelta:动画结束位置的纵坐标。

(6)android:duration:动画的持续时间,单位是毫秒。也就是说,动画要在android:duration属性指定的时间内

从起始点移动到结束点。

装载补间动画文件需要使用android.view.animation.AnimationUtils.loadAnimation方法,该方法的定义如下:

public static Animation loadAnimation(Context context, int id)throws NotFoundException

其中id表示动画文件的资源ID。装载translate_tween.xml文件的代码如下:

Animation animation=AnimationUtils.loadAnimation(this, R.anim.translate_tween);

在布局文件中放一个ImageView控件,将补间动画应用到ImageView控件上的方式有如下两种。

(1)使用startAnimation方法,如下:

iv_traslate.startAnimation(animation);</pre><pre name="code" class="java">

(2)使用Animation.start方法,如下:

iv_traslate.setAnimation(animation);animation.start();

使用上面两种方式开始补间动画都只执行一次。如果想循环显示动画,需要使用如下代码将动画设置成循环状态:

animation.setRepeatCount(Animation.INFINITE);

如果想通过Java代码实现移动补间动画,可以创建android.view.animation.TranslateAnimation对象,如以下代

当爱丽思丢失了通往仙境的钥匙,

Android中的帧动画与补间动画的使用

相关文章:

你感兴趣的文章:

标签云: