下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助。

当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的状态。

activity代码:

代码如下

package cn.com.chenzheng_java.animation;

import android.app.Activity;

import android.graphics.drawable.AnimationDrawable;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;

/**

* @description android中的逐帧动画.

* 逐帧动画的原理很简单,跟电影的播放一样,一张张类似的图片不停的切换,当切换速度达到一定值时.

* 我们的视觉就会出现残影,残影的出现保证了视觉上变化的连续性,这时候图片的切换看在我们眼中就跟真实的一样了。

* 想使用逐帧动画:

* 第一步:需要在res/drawable文件夹下新建一个xml文件,该文件详细定义了动画播放时所用的图片、切换每张图片

*        所用的时间、是否为连续播放等等。(有些文章说,在res/anim文件夹下放置该文件,事实证明,会出错哦)

* 第二步:在代码中,将该动画布局文件,赋值给特定的图片展示控件,如本例子中的ImageView。

* 第三步:通过imageView.getBackGround()获取相应的AnimationDrawable对象,然后通过该对象的方法进行控制动画

* @author chenzheng_java

*

*/

public class Animation1Activity extends Activity {

ImageView imageView ;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.animation1);

imageView = (ImageView) findViewById(R.id.imageView_animation1);

imageView.setBackgroundResource(R.drawable.animation1_drawable);

}

public void myClickHandler(View targetButton){

// 获取AnimationDrawable对象

AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();

// 动画是否正在运行

if(animationDrawable.isRunning()){

//停止动画播放

animationDrawable.stop();

}

else{

//开始或者继续动画播放

animationDrawable.start();

}

}

}

animation1.xml文件:

代码如下

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://www.maiziedu.com"

android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical">

<Button  android:id="@+id/button_animation1" android:text="动画开始"

android:layout_gravity="center_horizontal" android:layout_width="wrap_content"

android:layout_height="wrap_content" android:onClick="myClickHandler"></Button>

<ImageView android:id="@+id/imageView_animation1"

android:layout_width="fill_parent"

android:layout_height="wrap_content" android:layout_weight="1"></ImageView>

</LinearLayout>

存放动画文件的xml文件:

代码如下

<?xml version="1.0" encoding="utf-8"?>

<!--

根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画

根标签下,通过item标签对动画中的每一个图片进行声明

android:duration 表示展示所用的该图片的时间长度

-->

<animation-list

xmlns:android="http://schemas.android.com/apk/res/android"

android:oneshot="false"

>

<item android:drawable="@drawable/a1" android:duration="50"></item>

<item android:drawable="@drawable/a2" android:duration="50"></item>

<item android:drawable="@drawable/a3" android:duration="50"></item>

<item android:drawable="@drawable/a4" android:duration="50"></item>

<item android:drawable="@drawable/a5" android:duration="50"></item>

<item android:drawable="@drawable/a6" android:duration="50"></item>

</animation-list>

除此之外:在AnimationDrawable中,我们还可以在IT在线教育平台麦子学院找到如下的几个重要方法:

setOneShot(boolean flag) 和在配置文件中进行配置一样,可以设置动画是否播放一次,false为连续播放;

addFrame (Drawable frame, int duration) 动态的添加一个图片进入该动画中.

Android开发教程AnimationDrawable逐帧播放动画的更多相关文章

  1. 转Android 用Animation-list实现逐帧动画

    Android 用Animation-list实现逐帧动画     第一步:先上图片素材,以下素材放到res/drawable目录下: http://blog.csdn.net/aminfo/arti ...

  2. 【Android开发VR实战】二.播放360&#176;全景视频

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...

  3. Android开发教程大全介绍

    Android是由谷歌在2007年推出的一个开放系统平台,主要针对移动设备市场,目前版本为Android 4.0.Android基于Linux,开发者可以使用Java或C/C++开发Android应用 ...

  4. ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView

    原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...

  5. ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

    原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...

  6. ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置

    原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.c ...

  7. ArcGIS Runtime for Android开发教程V2.0(1)基本概念

    原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csd ...

  8. 【Android 开发教程】动态添加Fragments

    本章节翻译自<Beginning-Android-4-Application-Development>,如有翻译不当的地方,敬请指出. 原书购买地址http://www.amazon.co ...

  9. 收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。

    AndroidDevTools Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具.An ...

随机推荐

  1. laravel加入验证码类几种方法 && Laravel引入第三方库的方法

    1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上 ...

  2. 如何限制textarea文本框的输入字数

    代码实例如下: <!doctype html><html><head><meta charset="UTF-8"><title ...

  3. 拥抱高效、拥抱 Bugtags 之来自用户的声音

    小编按:这是一篇 Bugtags 用户来稿,主要是介绍了 Bugtags 使用的方法及其带来的效率的提升,谢谢介博同学对 Bugtags 的信赖和支持.小编在这里诚邀各位热心用户向我们投稿,说出你使用 ...

  4. 在Windows 7上安装MongoDB 2.6.7

    sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=\"C:\mongodb\ ...

  5. java io InputStream 转 byte

    InputStream is ; ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = new byte[1024] ...

  6. Delphi 在线程中如何使用TClientSocket组件并自动检测该组件

    在线程中如何使用TClientSocket组件并自动检测该组件的事件?我想在一个线程中动态创建一个TClientSocket组件,并要求该组件能够自动检测Socket事件(例如OnRead.OnErr ...

  7. POJ - 1159 Palindrome(dp-回文变形)

    d.求对字符串最少添加几个字符可变为回文串. s. 法1:直接对它和它的逆序串求最长公共子序列长度len.N-len即为所求.(N为串长度) 因为,要求最少添加几个字符,我们可以先从原串中找到一个最长 ...

  8. [SQL]向3个表插入数据的存储过程 和 C# 代码

    public int UpdateQty(string strPartID, int iQty, int iUpdateQty, string strBarCode, string strCreate ...

  9. Air Raid(最小路径覆盖)

    Description Consider a town where all the streets are one-way and each street leads from one interse ...

  10. [转]使用 HttpClient 和 HtmlParser 实现简易爬虫

    http://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ http://blog.csdn.net/dancen/article/d ...