Android动画框架详解
html animation属性简介:Android平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果。Android动画框架详解由原理篇和实例篇两部分组成。本文是第一部分原理篇,主要分析Tween动画的实现原理,最后简单介绍在Android 中如何通过播放Gif文件来实现动画。第二部分实例篇将在原理篇的基础上,向您展示一个动画实例的实现。
本文的标签:android
标记本文!
发布日期:2010年12月17日
级别:中级
访问情况14398次浏览
建议:0(添加评论)
平均分(共28个评分)
Android平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述Android的动画框架是如何实现的。任何一个框架都有其优势和局限性,只有明白了其实现原理,开发者才能知道哪些功能可以利用框架来实现,哪些功能须用其他途径实现。Android平台提供了两类动画,一类是Tween动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是Frame动画,即顺序播放事先做好的图像,跟电影类似。本文是由两部分组成的有关Android动画框架详解的第一部分原理篇,主要分析Tween动画的实现原理,最后简单介绍在Android中如何通过播放Gif文件来实现动画。我们先看一下动画示例来一点感性认识。Android动画使用示例
使用动画示例程序的效果是点击按钮,TextView旋转一周。读者也可以参看Apidemos中包ample.android.apis.animationview下面的Transition3d和ample.android.apis.view下面的Animation1/Animation2/Animation3示例代码。
清单1.代码直接使用动画
package com.ray.animation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
public class TestAnimation extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);
Button btn=(Button)findViewById(R.id.Button);
btn.setOnClickListener(this);
}
public void onClick(View v){
Animation anim=null;
anim=new?RotateAnimation(0.0f,+360.0f);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.setDuration(3000);
findViewById(R.id.TextView01).startAnimation(anim);
}
}
使用XML文件方式,在打开Eclipse中新建的Android工程的res目录中新建anim文件夹,然后在anim目录中新建一个l(注意文件名小写),内容如下:
图1.使用xml文件方式
其中的java代码如下:
package com.ray.animation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;
public class TestAnimation extends Activity implements OnClickListener{ public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);
Button btn=(Button)findViewById(R.id.Button01);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v){
Animation anim=AnimationUtils.loadAnimation(this,_rotate_action);
findViewById(R.id.TextView01).startAnimation(anim);
}
}
回页首Android动画框架原理
现有的Android动画框架是建立在View的级别上的,在View类中有一个接口startAnimation来使动画开始,startAnimation函数会将一个Animation类别的参数传给View,这个Animation是用来指定我们使用的是哪种动画,现有的动画有平移,缩放,旋转以及alpha变换等。如果需要更复杂的效果,我们还可以将这些动画组合起来,这些在下面会讨论到。
要了解Android动画是如何画出来的,我们首先要了解Android的View是如何组织在一起,以及他们是如何画自己的内容的。每一个窗口就是一棵View树,下面以我们写的android_tabwidget_tutorial.doc中的tab控件的窗口为例,通过android工具hierarchyviewer得到的窗口View Tree如下图1所示:
图2.界面View结构图
图3.界面View结构和显示对应图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论