相信对于那些基础Android的人来说对于帧动画或补间动画应该并不陌生了吗?今天我给大家讲的是Android逐帧动画比较简单!
先上效果图!
Android逐帧动画Animation_list篇_第1张图片
下面仔细讲一下AnimationDrawable这个类

Android逐帧动画Animation_list篇_第2张图片
Object是所有类的父类毋庸置疑,其次它的间接父类是DrawableContainer
下面看下他们的构造方法以及函数
public class AnimationDrawable
extends DrawableContainer
implements Runnable
An object used to create frame-by-frame animations, defined by a series of Drawable objects, which can be used as a View object’s background.

The simplest way to create a frame-by-frame animation is to define the animation in an XML file, placed in the res/drawable/ folder, and set it as the background to a View object. Then, call run() to start the animation.

An AnimationDrawable defined in XML consists of a single element, and a series of nested tags. Each item defines a frame of the animation. See the example below.

spin_animation.xml file in res/drawable/ folder:
简单的来说创建一个逐帧动画就是创建一个xml文件,在res/drawable目录下然后在里面设置一个背景的View对象然后去启动动画。
顺序具体代码如下
anim_dialog_loading.xml

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" > <item android:drawable="@drawable/loading_0" android:duration="200">item> <item android:drawable="@drawable/loading_1" android:duration="200">item>      <item android:drawable="@drawable/loading_2" android:duration="200">item>      <item android:drawable="@drawable/loading_3" android:duration="200">item>      <item android:drawable="@drawable/loading_4" android:duration="200">item>      <item android:drawable="@drawable/loading_5" android:duration="200">item>      <item android:drawable="@drawable/loading_6" android:duration="200">item>      <item android:drawable="@drawable/loading_7" android:duration="200">item>animation-list>

倒序代码
anim_dialog_loading2.xml

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" > <item android:drawable="@drawable/loading_7" android:duration="200">item>      <item android:drawable="@drawable/loading_6" android:duration="200">item>      <item android:drawable="@drawable/loading_5" android:duration="200">item>      <item android:drawable="@drawable/loading_4" android:duration="200">item>      <item android:drawable="@drawable/loading_3" android:duration="200">item>      <item android:drawable="@drawable/loading_2" android:duration="200">item>      <item android:drawable="@drawable/loading_1" android:duration="200">item>      <item android:drawable="@drawable/loading_0" android:duration="200">item>animation-list>

Android逐帧动画Animation_list篇_第3张图片
这里比较简单自己看API文档
了解之后就可以开车了,其实我们实现的功能很简单,主要输逐帧动画,顺序播放,倒序播放,以及停止播放动画设置每帧间隔时间为0.2秒

private void initView() {        // TODO Auto-generated method stub        iv_anim=(ImageView) findViewById(R.id.iv_anim);    }

顺序逐帧播放动画

public void Order(View v){        //顺序        iv_anim.setImageResource(R.drawable.anim_dialog_loading);        animationDrawable=(AnimationDrawable) iv_anim.getDrawable();        animationDrawable.start();        Log.i(TAG, "正在顺序播放动画");    }

倒序逐帧播放动画

public void Back(View v){        //倒序        iv_anim.setImageResource(R.drawable.anim_dialog_loading2);        animationDrawable=(AnimationDrawable) iv_anim.getDrawable();        animationDrawable.start();        Log.i(TAG, "正在倒序播放动画");    }

停止播放逐帧动画

public void Stop(View v){        //停止    animationDrawable=(AnimationDrawable) iv_anim.getDrawable();    animationDrawable.stop();    Log.i(TAG, "正在停止播放动画");    }

布局文件
activity_anim.xm文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >     <ImageView          android:id="@+id/iv_anim"         android:layout_width="80dp"        android:layout_height="80dp"        android:contentDescription="@string/app_name"       android:src="@drawable/a_1"       android:scaleType="fitXY"       android:padding="5px"       android:layout_gravity="center"        />    <Button         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="顺序播放"        android:onClick="Order"        android:layout_marginTop="20dp"         android:layout_marginLeft="20dp"         android:layout_marginRight="20dp"        />     <Button         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="倒序播放"         android:layout_marginTop="20dp"         android:layout_marginLeft="20dp"         android:layout_marginRight="20dp"        android:onClick="Back"        />      <Button         android:layout_width="match_parent"          android:layout_height="wrap_content"          android:padding="5px"          android:text="停止"          android:layout_marginLeft="20dp"         android:layout_marginRight="20dp"         android:layout_marginTop="20dp"        android:onClick="Stop"/>  LinearLayout>

最后上AnimationActivity完整Code

package com.zm.getareatest;import android.app.Activity;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;public class AnimationActivity extends Activity {    private static final String TAG=AnimationActivity.class.getSimpleName();    private ImageView iv_anim;    private AnimationDrawable animationDrawable;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        this.requestWindowFeature(Window.FEATURE_NO_TITLE);        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);        setContentView(R.layout.activity_anim);        initView();    }    private void initView() {        // TODO Auto-generated method stub        iv_anim=(ImageView) findViewById(R.id.iv_anim);    }    public void Order(View v){        //顺序        iv_anim.setImageResource(R.drawable.anim_dialog_loading);        animationDrawable=(AnimationDrawable) iv_anim.getDrawable();        animationDrawable.start();        Log.i(TAG, "正在顺序播放动画");    }    public void Back(View v){        //倒序        iv_anim.setImageResource(R.drawable.anim_dialog_loading2);        animationDrawable=(AnimationDrawable) iv_anim.getDrawable();        animationDrawable.start();        Log.i(TAG, "正在倒序播放动画");    }    public void Stop(View v){        //停止    animationDrawable=(AnimationDrawable) iv_anim.getDrawable();    animationDrawable.stop();    Log.i(TAG, "正在停止播放动画");    }}

日志输出如下图所示

Android逐帧动画Animation_list篇_第4张图片

总结:

1、找到相关素材我这里已经提供大家直接下载即可
2、熟悉AnimationDrawable类构造方法以及函数
3、实现逐帧播放动画 按照顺序 倒序 停止等方法执行
4、记得在清单文件AdroidMainfest.xml注册ActivityAndroidStudio除外

素材如下

这里写图片描述loading_0
这里写图片描述loading_1
这里写图片描述loading_2
这里写图片描述loading_3
这里写图片描述loading_4
这里写图片描述loading_5
这里写图片描述loading_6
这里写图片描述loading_7
非常简单,另外有兴趣的可以加群一起撸代码!扫码直接进入开车哈哈!欢迎哈!转载请注明出处!谢谢!
Android逐帧动画Animation_list篇_第5张图片

更多相关文章

  1. Android基于tess-two的离线身份证等图片文字识别
  2. Android把Bitmap保存为bmp图片
  3. Android三种常用动画分享(1)--帧动画
  4. android中处理图片成圆角
  5. android下使用Fragment实现左侧3级菜单+动画效果
  6. android 保存图片到本地系统相册
  7. 转:android 图片叠加效果——两种方法
  8. Android 页面或文件或网络请求时的加载动画

随机推荐

  1. Android(安卓)P图形架构之实现双屏异显
  2. android关于Intent的读书笔记
  3. Android中的JVM如何追蹤Bitmap buffer的
  4. Android主题和界面跳转动画的设置
  5. Android(安卓)Thread Looper Handler 关
  6. Android(安卓)Studio: Error:Execution f
  7. Android筆記 - 從DEX檔案格式看Dalvik的
  8. Android(安卓)LCD(一):LCD基本原理篇
  9. Develop -- Training(十) -- 共享文件
  10. Android(安卓)中的WiFi学习笔记——经典