原理:
逐帧动画是最简单的一种动画。原理就是把几张图片连续显示出来,以达到动画的效果。就相当于下面这种手绘翻页动画啦~
实现:
1、需要建立一个animation-list来设置静态图片资源、持续时间和是否循环播放。在res下建立一个anim文件夹,然后新建一个intro5.xml文件
<?xml version="1.0" encoding="utf-8"?> <!-- 指定动画循环播放 --> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <!-- 添加多个帧 --> <item android:drawable="@drawable/intro5" android:duration="400" /> <item android:drawable="@drawable/intro51" android:duration="400" /> </animation-list>
android:drawable="@drawable/intro5"是图片资源
android:duration="400"指的是这幅图片显示400毫秒
android:oneshot="false"表示循环播放
2、把动画资源intro5.xml设置到ImageView的背景图里面,以便AnimationDrawable的调用
<ImageView android:id="@+id/anim" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@anim/intro5" android:scaleType="center" />
在android:background="@anim/intro5"的地方设置第一步写的动画资源。当然,如果你想连续播放多个动画的话,可以写好几个动画资源,然后在java代码里不断设置ImageView的背景。
3、需要AnimationDrawable来控制逐帧动画的开始、结束等其他操作。
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button play = (Button)findViewById(R.id.play); Button stop = (Button)findViewById(R.id.stop); ImageView imageView = (ImageView)findViewById(R.id.anim); //获取AnimationDrawable动画对象 final AnimationDrawable anim = (AnimationDrawable)imageView .getBackground(); play.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //开始播放动画 anim.start(); } }); stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //停止播放动画 anim.stop(); } }); } }
AnimationDrawable除去开始播放动画和停止播放动画外还有一些操作,不过个人觉得几乎是用不上。
不过还是附上官网的链接吧:http://developer.android.com/guide/topics/graphics/drawable-animation.html