下面我们一起来看篇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. xcode 插件管理工具

    每次xcode 更新后之前安装的插件 都失效了!解决办法: 一.可以通过在原插件项目infoplist新增 新xcode的 DVTPlugInCompatibilityUUID 来使之支持新版xcod ...

  2. free 查看系统内存

    第二部分(-/+ buffers/cache):(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used – buffers – cached)(+buffers ...

  3. springMVC spring hibernate pom.xml备份

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  4. Throttling ASP.NET Web API calls

    http://blog.maartenballiauw.be/post/2013/05/28/Throttling-ASPNET-Web-API-calls.aspx https://github.c ...

  5. std::string::npos mean

    std::string::npos 表示 no position, 没位置, 没找到

  6. [原创] IIS7下顶级域名301跳转到WWW域名

    百度搜索了众多方法,居然没有一个全面的IIS7下301域名跳转能用的教程,最终自己研究出了个可以用的供大家参考.1.绑定域名01ruodian.cn www.01ruodian.cn到空间: 2.在I ...

  7. JavaScript == VS ===

    引用自  http://fxk2006.iteye.com/blog/768260 ==   equality 等同,两边值类型不同的时候,要先进行类型转换,再比较. === identity 恒等, ...

  8. jmeter接口自动化,你敢想,我敢玩

    飞测说:大家好,我是黑夜小怪,今天我又来了分享了.最近用jmeter比较多,做过自动化测试的都知道,我们脚本和数据维护是你十分头疼的事情,刚好黑夜小怪我最近接触到一个项目的接口测试,今天我们一起分享下 ...

  9. 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)

    云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...

  10. memcached学习(5). memcached的应用和兼容程序

    mixi在提供服务的初期阶段就使用了memcached. 随着网站访问量的急剧增加,单纯为数据库添加slave已无法满足需要,因此引入了memcached. 此外,我们也从增加可扩展性的方面进行了验证 ...