Frame动画实战
Android动画分为Tween动画和Frame动画,Tween动画主要包括图片的放大缩小、旋转、透明度变化、移动等等操作;Frame动画则简单得多了,就是把一张张的图片连续播放产生动画效果。
本节主要介绍一下Frame动画,Tween动画会在后面的文章中介绍,敬请关注。
Frame动画主要是通过AnimationDrawable类来实现的,它有start()和stop()两个重要的方法来启动和停止动画。Frame 动画一般通过XML文件配置,在工程的res/anim目录下创建一个XML配置文件,该配置文件有一个<animation-list>根 元素和若干个<item>子元素。
实现一个人跳舞的Frame动画,6张图片如下所示:
1、把这6张图片放到res/drawable目录下,分别取名为:p01.png,p02.png,p03.png,p04.png,p05.png,p06.png。
2、在res/anim目录下创建一个XML配置文件,文件名为:dance.xml,文件内容:
- <?xml version="1.0" encoding="utf-8"?>
- <animation-list xmlns:apk="http://schemas.android.com/apk/res/android" apk:oneshot="false">
- <item apk:drawable="@drawable/p01" apk:duration="500"/>
- <item apk:drawable="@drawable/p02" apk:duration="500"/>
- <item apk:drawable="@drawable/p03" apk:duration="500"/>
- <item apk:drawable="@drawable/p04" apk:duration="500"/>
- <item apk:drawable="@drawable/p05" apk:duration="500"/>
- <item apk:drawable="@drawable/p06" apk:duration="500"/>
- </animation-list>
apk:oneshot指示是否只运行一次,设置为false则意味着循环播放。
3、在res/layout目录下创建layout配置文件dance.xml,文件内容:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:apk="http://schemas.android.com/apk/res/android" apk:orientation="vertical" apk:layout_width="fill_parent" apk:layout_height="fill_parent">
- <!-- Frame动画图片 -->
- <ImageView apk:id="@+id/ImgDance" apk:layout_width="wrap_content" apk:layout_height="wrap_content" apk:background="@anim/dance"/>
- <!-- 动画控制按钮 -->
- <LinearLayout apk:layout_width="fill_parent" apk:layout_height="wrap_content" apk:orientation="horizontal">
- <Button apk:text="开始" apk:layout_width="wrap_content" apk:layout_height="wrap_content" apk:onClick="onStartDance"/>
- <Button apk:text="结束" apk:layout_width="wrap_content" apk:layout_height="wrap_content" apk:onClick="onStopDance"/>
- </LinearLayout>
- </LinearLayout>
apk:background使用上面的动画作为背景,意味着要取得动画,只要取得该View的背景即可,当然可以在代码中通过设置背景的方式指定;
apk:onClick指示按钮的动作,当然可以在代码中通过实现OnClickListener的方式实现。
4、Activity代码:
/**
* Copyright (c) 2004-2011 All Rights Reserved.
*/
package
com.aboy.android.study.animation;
import
android.app.Activity;
import
android.graphics.drawable.AnimationDrawable;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.ImageView;
import
com.aboy.android.study.R;
/**
* Frame动画
*
* @author obullxl@gmail.com
* @version $Id: FrameActivity.java, v 0.1 2011-6-10 下午12:49:46 oldbulla Exp $
*/
public
class
FrameActivity
extends
Activity {
public
static
final
String TAG =
"FrameActivity"
;
// 显示动画的组件
private
ImageView imgDance;
// Frame动画
private
AnimationDrawable animDance;
/**
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
public
void
onCreate(Bundle cycle) {
super
.onCreate(cycle);
super
.setContentView(R.layout.dance);
// 实例化组件
this
.imgDance = (ImageView)
super
.findViewById(R.id.ImgDance);
// 获得背景(6个图片形成的动画)
this
.animDance = (AnimationDrawable)
this
.imgDance.getBackground();
}
/**
* 按钮:开始‘跳舞’动画
*/
public
void
onStartDance(View view) {
this
.animDance.start();
}
/**
* 按钮:停止‘跳舞’动画
*/
public
void
onStopDance(View view) {
this
.animDance.stop();
}
}
Frame动画实战的更多相关文章
- iOS自定义转场动画实战讲解
iOS自定义转场动画实战讲解 转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerA ...
- Android动画之Tween动画实战
Android动画分为Tween动画和Frame动画,上一节通过一个实例介绍了Frame动画,本节将介绍Tween动画.Tween可以把对象进行缩小.放大.旋转和渐变等操作. Tween动画有 ...
- android之frame动画详解
上一篇我们说了android中的tween动画,这一篇我们说说frame动画,frame动画主要是实现了一种类似于gif动画的效果,就是多张图按预先设定好的时间依次连续显示. 新建一个android项 ...
- COCOS2D-X FRAME动画创作随笔
CCAnimate继承CCActionInterval,和CCAnimate是一家action,有着action所有的属性和方法. CCAnimate一些重要的方法: static CCAnimate ...
- 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
[源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 动画 示例An ...
- Android Frame动画demo
Android动画介绍:Android为我们提供了两种动画实现,Frame和Tween. 两者之间的区别: 1.Frame动画:就像放电影一样,是通过预先做好的图片进行连续播放从而形成动画效果 2.T ...
- 按钮在执行frame动画的时候怎么响应触发事件?
按钮在执行frame动画的时候怎么响应触发事件? 代码中效果(请注意,我并没有点击到按钮,而是点击到按钮的终点frame值处): 对应的代码: // // ViewController.m // Ta ...
- Android 动画具体解释Frame动画 (Drawable Animation)
Frame动画像gif画画,通过一些静态的图片,以实现动画效果. Android sdk该AnimationDrawable就是专门针对Frame动画,当然Frame动画也可在java代码或者xml中 ...
- Android Animation动画实战(二):从屏幕底部弹出PopupWindow
在这篇文章之前,我已经陆陆续续写了几篇博客,介绍了Android Animation是如何使用的,有还不明白的,可以点击查看: 1. Android Animation动画详解(一): 补间动画 2. ...
随机推荐
- webpack学习笔记--安装
1 首先要安装node Node.js 自带了软件包管理器 npm,Webpack 需要 Node.js v0.6 以上支持 2 npm install webpack -g 通常我们会将 Webp ...
- [C语言入门笔记]循环与运算符
循环与运算符 什么是循环? 循环就是一个不停工作的东西,可以反复的实现一个功能,这个才是计算机的重点.计算机可以重复的做一件事情,这样子可以省很多事情 循环的种类有哪些? While Do while ...
- 配置handler vs2013 iis8.0
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <v ...
- Python 小练习
输出标题以及长度 结果 输出网页下方学校地理位置以及 输出"abcdefg"base64编码 输出网页内容的MD5 hash
- 使用scrapy创建工程
前提:先创建一个文件夹用来存放爬虫工程 创建项目命令: scrapy startproject <project_name> 例子: scrapy startproject myproje ...
- Discuz! X3.1直接进入云平台列表的方法
Discuz! X3.1已经改版,后台不能直接进云平台列表,不方便操作,操作云平台服务时,大家可以这样操作: 1.登录后台:2.访问域名进入云平台列表http://你域名/admin.php?fram ...
- Android广播
Android中的广播主要分为两类,标准广播和有序广播 标准广播: 一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此没有任何的先后顺序 这种广播的 ...
- 运维之netstat
实用命令实例 1. 列出所有端口 (包括监听和未监听的) 列出所有端口 netstat -a # netstat -a | more Active Internet connections ( ...
- 非Spring下的Quartz
转自:Nick Huang. http://www.cnblogs.com/nick-huang/ 阅读目录 > 参考的优秀资料 > 版本说明 > 简单的搭建 > 在We ...
- iOS_TCP和UDP的详解
TCP和UDP面试经常被问到,一些初学者也经常问我这种问题,由于TCP协议和UDP协议是基于三次“对话”,解释起来很费劲,所以在这里详细的描述一下自己对TCP协议和UDP协议的理解,如有不妥之处,望指 ...