Frame-by-frame Animation可以在XML Resource定义(存放到res/anim文件夹下,也可以存放在res/drawable文件夹下(Android文档就是这样说的)),也可以使 用AnimationDrawable中的API定义。由于Tween Animation与Frame-by-frame Animation有着很大的不同,因此XML定义的格式也完全不一样,其格式是:首先是animation-list根节点,animation- list根节点中包含多个item子节点,每个item节点定义一帧动画:当前帧的drawable资源和当前帧持续的时间。下面对节点的元素加以说明:

XML属性 说明
drawable 当前帧引用的drawable资源
duration 当前帧显示的时间(毫秒为单位)
oneshot 如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播 放。
variablePadding If true, allows the drawable’s padding to change based on the current state that is selected.
visible 规定drawable的初始可见性,默认为flase;

动画文件animation.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/appwidget_clock_dial" android:duration="2000"></item> <item android:drawable="@drawable/clockdroid2_dial" android:duration="2000"></item> <item android:drawable="@drawable/clockdroids_dial" android:duration="2000"></item> <item android:drawable="@drawable/clockgoog_dial" android:duration="2000"></item> </animation-list>

主文件FrameAnimation.java为:

package com.android.animation; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.MotionEvent; import android.widget.ImageView; public class FrameAnimation extends Activity { AnimationDrawable frameAnimation = new AnimationDrawable(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView imageView = (ImageView) findViewById(R.id.imageview); imageView.setBackgroundResource(R.anim.animation); frameAnimation = (AnimationDrawable)imageView.getBackground(); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { frameAnimation.start(); } return super.onTouchEvent(event); } }

几点说明:

  1. animation.xml中<?xml version="1.0" encoding="utf-8"?>是必不可少的,它标识版本号和编码类型。
  2. animation.xml中xmlns:android="http://schemas.android.com/apk/res/android"也是必不可少的,缺失会提示“Error parsing XML: unbound prefix ”的错误。它指定正确的namespace。
  3. 与Tween animation的动画文件相比,在<animation-list></animation-list>标签外面少了<set></set>标签,如果加上程序不能运行。<set>: A container that can recursively hold itself or other animations.You can include as many child elements of the same or different types as you like.关于资源方面的详细标签介绍参考file:///work/android-sdk-linux_x86-1.6_r1/docs/guide/topics/resources/available-resources.html 。里面有动画标签的详细说明。
  4. 启动Frame-by-frame Animation动画的代码FrameAnimation.start();不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。

Frame-by-frame animation实例相关推荐

  1. 在html语言中frame,html Frame、Iframe、Frameset 的区别

    10.4.1  Frameset与Frame的区别 首先讲解Frameset与Frame之间的区别. 用来划分框架,每一个框架由标记.必须在之内使用,代码如下: 在上面的例子当中, 把页面分为左右两个 ...

  2. frame 和 frame属性

    帧标志 1.<frameset></frameset> 2.<frame> 3.<noframes></noframes> 帧是由英文Fra ...

  3. html frame跳转实例,HTML frame标签怎么用?frame标签的具体使用实例

    本篇文章主要为大家讲述的是关于HTML frame标签的用法,还有关于frame标签中的属性介绍.还有关于frame标签的使用实例,下面就让我们一起来看看这篇文章吧 首先我们先看看HTML frame ...

  4. html的frame怎么使用方法,HTML frame标签怎么用?frame标签的具体使用实例

    本篇文章主要为大家讲述的是关于HTML frame标签的用法,还有关于frame标签中的属性介绍.还有关于frame标签的使用实例,下面就让我们一起来看看这篇文章吧 首先我们先看看HTML frame ...

  5. Python实例讲解 -- 认识wxpython 的 Frame

    简单小代码: #!/usr/bin/python # -*- coding: GBK -*- # simple.pyimport wxapp = wx.App() frame = wx.Frame(N ...

  6. python中frame用法_Python实例之wxpython中Frame使用方法

    本节为大家分享的例子是wxpython Frame的用法. 例子: 代码如下: #!/usr/bin/python # -*- coding: GBK -*- # simple.py import w ...

  7. python中frame是什么意思_Python实例之wxpython中Frame使用方法

    本节为大家分享的例子是wxpython Frame的用法. 例子: #!/usr/bin/python # -*- coding: GBK -*- # simple.py import wx app ...

  8. 背水一战 Windows 10 (41) - 控件(导航类): Frame

    原文:背水一战 Windows 10 (41) - 控件(导航类): Frame [源码下载] 背水一战 Windows 10 (41) - 控件(导航类): Frame 作者:webabcd 介绍 ...

  9. html中的框架frameset和frame及iframe

    通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面. 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面,简而言之,就是在一个窗口中显示多个页面. 每个页面称之为一个框架.并且每个框架独立 ...

最新文章

  1. 2021-10-14 yolov5踩坑!!!经验大赏
  2. Step by Step WebMatrix网站开发之二:使用WebMatrix(1)
  3. 28个HTML5特征、窍门和技术
  4. android file 创建时间,获得文件的创建时间(精确到时分秒)
  5. learning material at the outer world
  6. iOS9https设置info.plist
  7. Oracle statspack 基本使用
  8. Windows 10 Creators Update [ISO官方镜像][15063][1703][x64][x86][创意者更新正式版]
  9. mysql查询去年本月的数据_MySQL查询本周、上周、本月、上个月份数据的sql代码...
  10. 使用动态数据进行数据分页
  11. java 铁路的运费与路程_Java语言程序设计2(16)
  12. Verilog实现的多个按键消抖(具体模块可用)
  13. rhel6.3搭建iscsi-target服务器实战
  14. 阶段3 1.Mybatis_03.自定义Mybatis框架_2.自定义Mybatis的分析-创建代理对象的分析
  15. C语言编程-9_4 字符统计
  16. JDK获取所有的系统参数
  17. Python(二):基本数据类型、序列的基本操作
  18. 兄弟9150cdn换硒鼓清零抹粉_兄弟打印机粉盒硒鼓怎么清零?这里有详细的步骤...
  19. XMAPP 的安装与配置
  20. 基于ROS的机器人建图与导航仿真全过程

热门文章

  1. Shopex4.85 cms后台管理员权限获取webshell
  2. AI视频识别电动二轮车闯红灯自动抓拍系统解决方案
  3. 安装activeperl遇到写入错误,无权限访问目录
  4. win8 ie打不开OA办公系统
  5. sqlserver四舍六入五留双函数
  6. 打开深度学习的潘多拉魔盒(模型可视化)
  7. python 三七小说爬虫小记
  8. 一分钟让你明白OKR考核
  9. 信息安全技术 个人信息安全工程指南
  10. MySQL-Test-Run测试工具