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. ... 
随机推荐
- cookie详解
			一.cookie详解 (1)设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId ... 
- maven添加本地jar包
			今天遇到一个mavan仓库中没有的jar包, 故只能添加本地jar包, 花了不少时间找资料,终于OK.故在此记录. 1. 第一次,在网上看到说可以用<systemPath> 解决, 如下: ... 
- visio个人专注
			字体颜色 1 填充 2 标注 3 箭头 4 线条 5 粗细 6 
- 关于vs调试中kaze时出现的问题
			在kaze程序中,调试时,会出现内存释放出现问题,导致调试失败. 解决方法:将主函数所在的源文件中的所有函数中的vector声明的向量都放在主函数外面,成为全局变量,让系统自己释放,再次调试就不会出现 ... 
- 数据类型、常量、变量、printf、scanf和运算符
			数据类型 常量 变量 printf函数介绍 scanf函数介绍 运算符 数据类型 数据类型是指数据在内存中存储的方式. C语言中有5大数据类型:基本类型.构造类型.指针类型.空类型.定义类型. C语言 ... 
- WebService的两种方式Soap和Rest比较
			我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ... 
- 关于js异步上传文件
			好久没登录博客园了,今天来一发分享. 最近项目里有个需求,上传文件(好吧,这种需求很常见,这也不是第一次遇到了).当时第一想法就是直接用form表单提交(原谅我以前就是这么干的),不过表单里不仅有文件 ... 
- Codeforces Round #211 (Div. 2) D题(二分,贪心)解题报告
			---恢复内容开始--- 题目地址 简要题意: n个小伙子一起去买自行车,他们有每个人都带了一些钱,并且有公有的一笔梦想启动资金,可以分配给任何小伙子任何数值,当然分配权在我们的手中.现在给出m辆自行 ... 
- Mac的最小化和隐藏的区别
			Mac 中应用程序窗口的最小化和隐藏的快捷键: CMD + H 隐藏应用程序 CMD + M 最小化应用程序 重点在于两点的区别: 最小化会隐藏当前应用程序的窗口,不切换当前的应用程序:隐藏应用程序会 ... 
- 初学3D Touch
			引言 With iOS 9, new iPhone models add a third dimension to the user interface. A user can now press y ... 
