下面我们一起来看篇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. iOS 版本更新检查

    #pragma mark ---------------------------------- #pragma mark -- 检测版本更新 -(void)onCheckVersion { NSDic ...

  2. .Net中Math.Round与四舍五入

    有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法. Banker's rounding(银行家舍入) ...

  3. ArcGIS Engine 图层裁剪 Clip的实现方法

    方法一, 图层对图层裁剪,输出图层 ILayer pLayer; IFeatureLayer pFeatureLayer; IFeatureClass pFeatureClass; IWorkspac ...

  4. [POJ 3211] Washing Clothes (动态规划)

    题目链接:http://poj.org/problem?id=3211 题意:有M件衣服,每种衣服有一种颜色,一共有N种颜色.现在两个人洗衣服,规则是必须把这一种颜色的衣服全部洗完才能去洗下一种颜色的 ...

  5. maven配置开发

    1.项目中使用Log4j对其日志进行配置管理,采取的方式一种是通过properties文件设置,另一种方式就是通过设置xml文件的配置. 使用场景: 编程模型:log.err();log.debug( ...

  6. NoCache

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Ca ...

  7. 文件处理函数fopen、fread、fseek、fclose的使用实例介绍

    FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...

  8. Redis集群功能概述

    在单机Redis中介绍过Redis的复制特性以及Redis Sentinel和twemproxy,其中: 复制:可以创建指定服务器的复制品,这些复制品可以用户扩展系统处理读请求的能力: Redis S ...

  9. windows 测试数据库的连接状况-udl方法

    udl是windows系统上,用于测试数据库的连接状态的测试软件. 使用方法: 1.建立一个空白文本 2.将文件的后缀名更改为*.udl 即可     文件内容一定为空 3.选择windows的“提供 ...

  10. WebsitePanel 2.1.0beta配置部分

    到http://www.websitepanel.net/downloads/下载好单独安装包作为网站内容运行在IIS7.0上,配置applicationpool为localsystem Websit ...