Drawable Animation可以称为帧动画,因为它是通过每次播放一帧Drawable资源实现的。

Drawable Animation算不上真正意义上的动画,因为它的内部实现是通过定时发送消息更新一个Drawable,

例如一个背景。所以使用这个动画的时候更像是使用一个背景资源,只不过更新背景的动作不用我们自己进行。

也许正是因为这个原因,android官方建议我们将这个动画资源放在drawable目录。

使用帧动画非常之简单,只需要在drawable目录定义个xml文件,

使用animation-list标签包裹所有组成这个动画的图片文件,设置播放速率。

然后在java代码中使用。

定义xml文件

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!--每一个 item 中包括一帧组成动画的图片 -->
<item android:drawable="@drawable/a01" android:duration="80" />
<item android:drawable="@drawable/a02" android:duration="80" />
<item android:drawable="@drawable/a03" android:duration="80" />
<item android:drawable="@drawable/a04" android:duration="80" />
<item android:drawable="@drawable/a05" android:duration="80" />
<item android:drawable="@drawable/a06" android:duration="80" />
<item android:drawable="@drawable/a07" android:duration="80" />
<item android:drawable="@drawable/a08" android:duration="80" />
<item android:drawable="@drawable/a09" android:duration="80" />
<item android:drawable="@drawable/a10" android:duration="80" />
<item android:drawable="@drawable/a11" android:duration="80" />
<item android:drawable="@drawable/a12" android:duration="80" />
<item android:drawable="@drawable/a13" android:duration="80" />
</animation-list>

这样就定义好了我们的动画资源,之后就是在activity中调用

package com.whathecode.drawableanimation;

import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.widget.ImageView; public class MainActivity extends ActionBarActivity { private AnimationDrawable ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* 主布局文件实际上只是一个相对布局和一个ImageView
*/
setContentView(R.layout.activity_main); ImageView img = (ImageView) findViewById(R.id.ali); /**
* 获取动画资源,因为他就是一个背景资源
* 所以可以使用getBackground获取,然后强制转换成AnimationDrawable
* 也可以这样获取动画资源
* ad = (AnimationDrawable) getResources().getDrawable(R.drawable.motion);
* img.setBackgroundDrawable(ad);
*/
img.setBackgroundResource(R.drawable.motion);
ad = (AnimationDrawable)img.getBackground();
} @Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_UP:
//播放动画
ad.start();
return true;
}
return super.onTouchEvent(event);
}
}

这些,就是AnimationDrawable的全部

动画的使用—Drawable Animation的更多相关文章

  1. 动画的使用—Drawable Animation

    Drawable Animation可以称为帧动画,因为它是通过每次播放一帧Drawable资源实现的. Drawable Animation算不上真正意义上的动画,因为它的内部实现是通过定时发送消息 ...

  2. Android动画Drawable Animation

    Drawable Animation是逐帧动画,那么使用它之前必须先定义好各个帧.我们可以通过代码定义,也可以使用xml文件定义,一般使用后者.如下: <?xml version="1 ...

  3. Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  4. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)

    1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...

  5. Android动画View Animation与Drawable Animation

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

  6. Android动画效果之Frame Animation(逐帧动画)

    前言: 上一篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画),今天来总结下Android的另外一种动画Frame ...

  7. Android动画学习(二)——Tween Animation

    前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...

  8. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  9. Android animation学习笔记之view/drawable animation

    前一章中总结了android animation中property animation的知识和用法,这一章总结View animation和Drawable animation的有关知识: View ...

随机推荐

  1. RoboGuice 3.0 (二)进阶篇

    上篇介绍了RoboGuice的接入及基本使用,其中涉及到了一个@Singleton和@ContextSingleton的注解,这些都是作用域的注解,这篇我们先说明有关作用域的问题. 一.作用域 Sco ...

  2. DP优化与换零钱问题

    1 当贪心不再起效的时候 对于换零钱问题,最简单也是性能最好的方法就是贪心算法.可是贪心算法一定要满足面值相邻两个零钱至少为二倍关系的前提条件.例如1,2,5,10,20……这样的零钱组应用贪心最简单 ...

  3. 你买了多少ERP?

    企业使用ERP(或是其他管理系统),有三种模式:自开发.采购.租赁(SAAS).不知道企业的各级管理者们,是否想过这个问题——我们到底买(做.租)了多少“量”的ERP呢? 这个问题也许不是那么好回答. ...

  4. Android应用源码基于安卓的个人隐私监控项目

    本系统借鉴了现有安全软件的优点,设计了权限访问监控.流量监控.应用程序危险度监控和签名验证四个功能模块,同时针对现有安全软件的不足之处,对系统进行改进,让权限访问.流量监控.危险值等以图形化的方式呈现 ...

  5. 安卓直播开源: RTMP 推流SDK

    前些日子在github上提交了基于GPUImage的IOS直播推流SDK(https://github.com/runner365/GPUImageRtmpPush) 最近整理了android直播推流 ...

  6. MVVM中数据验证之 ViewModel vs. Model

                                                      MMVM模式示意图. View绑定到ViewModel,然后执行一些命令在向它请求一个动作.而反过来 ...

  7. 洛谷P1341 无序字母对[无向图欧拉路]

    题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...

  8. 对象比较器:Comparable和Comparator

    在进行对象数组排序的过程中需要使用到比较器,比较器有两个:Comparable和Comparator ①.java.lang.Comparable:是在类定义是时候默认实现好的接口,里面提供有一个co ...

  9. AC日记——中位数 洛谷 P1168

    题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k - 1]的中位数.[color=red]即[/color] ...

  10. 使用Struts2实现数据校验

    使用Struts2实现数据校验 为什么需要数据校验呢?答案很简单,假如当你登录想要京东,这时就需要数据校验了如果不输入用户名的话,那么就不会登陆成功,并且会提示出"请输入用户名"的 ...