`
iaiai
  • 浏览: 2204067 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android frame by frame animation动画显示

 
阅读更多
在看到编写简单的动画的时候,想到了android上也可以做到这一点,只是几个图片来回的切换。这种显示方式学名叫做:frame by frame animation,顺序播放事先做好的图像,跟电影类似;

效果:


res/anim/picture_animation.xml:
<?xml version="1.0" encoding="utf-8"?>

<!-- 动画帧集合对象 -->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<!--动画帧对象 android:duration表示每帧动画显示的时间,放在drawable下的动画图片不能太大,否则会内存爆掉 -->
	<item android:drawable="@drawable/camp_fire1" android:duration="83" />
	<item android:drawable="@drawable/camp_fire2" android:duration="83" />
	<item android:drawable="@drawable/camp_fire3" android:duration="83" />
	<item android:drawable="@drawable/camp_fire4" android:duration="83" />
	<item android:drawable="@drawable/camp_fire5" android:duration="83" />
	<item android:drawable="@drawable/camp_fire6" android:duration="83" />
	<item android:drawable="@drawable/camp_fire7" android:duration="83" />
	<item android:drawable="@drawable/camp_fire8" android:duration="83" />
	<item android:drawable="@drawable/camp_fire9" android:duration="83" />
	<item android:drawable="@drawable/camp_fire10" android:duration="83" />
	<item android:drawable="@drawable/camp_fire11" android:duration="83" />
	<item android:drawable="@drawable/camp_fire12" android:duration="83" />
	<item android:drawable="@drawable/camp_fire13" android:duration="83" />
	<item android:drawable="@drawable/camp_fire14" android:duration="83" />
	<item android:drawable="@drawable/camp_fire15" android:duration="83" />
	<item android:drawable="@drawable/camp_fire16" android:duration="83" />
	<item android:drawable="@drawable/camp_fire17" android:duration="83" />
</animation-list>


main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Button android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="start" android:id="@+id/start" />
	<ImageView android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:id="@+id/imageId"
		android:src="@anim/picture_animation" />
</LinearLayout>


IaiaiActivity.java类:
package com.iaiai.activity;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

/**
 * 
 * <p>
 * Title: IaiaiActivity.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-7-28
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiActivity extends Activity {

	private ImageView imageView;

	private AnimationDrawable draw = null;
	private Button start;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.imageView = (ImageView) findViewById(R.id.imageId);
		this.draw = (AnimationDrawable) imageView.getDrawable();
		
		this.start = (Button) findViewById(R.id.start);
		this.start.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if (draw.isRunning()) {
					draw.stop();
					start.setText("start");
				} else {
					draw.stop();
					draw.start();
					start.setText("passe");
				}
			}
		});

	}
}


注:代码运行的结果想必大家应该就知道了(图片按照顺序的播放一次),不过有一点需要强调的是:启动Frame Animation动画的代码rocketAnimation.start(); 不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。

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


下面,阅读Android SDK中对AnimationDrawable的介绍,有个简单的了解:
AnimationDrawable
获取、设置动画的属性
int getDuration()获取动画的时长
int getNumberOfFrames()获取动画的帧数
boolean isOneShot()/Void setOneShot(boolean oneshot)获取oneshot属性/设置oneshot属性
void inflate(Resurce r,XmlPullParser p,AttributeSet attrs)
增加、获取帧动画
Drawable getFrame(int index)获取某帧的Drawable资源
void addFrame(Drawable frame,int duration)为当前动画增加帧(资源,持续时长)
动画控制
void start()开始动画
void run()外界不能直接掉调用,使用start()替代
boolean  isRunning()当前动画是否在运行
void stop()停止当前动画
  • 大小: 36.8 KB
分享到:
评论

相关推荐

    Android的动画Animation详解

    Android动画主要分为两大类:Tween动画(渐变动画)和Frame-by-frame动画(逐帧动画)。这两种动画形式能够满足开发者对于基本动画效果的需求。 #### 二、XML中的动画定义 Android动画可以通过XML文件定义,并在...

    Animation动画基础.pdf

    ### Android Animation动画基础知识点 #### 一、Android动画类型 Android平台支持多种动画效果,主要分为两类:**基于XML的动画**与**基于Java代码的动画**。 1. **基于XML的动画**主要包括: - **alpha(渐变...

    Android Animation

    Android提供了多种动画机制,主要分为两类:Tweened Animation(渐变动画)和Frame-by-Frame Animation(逐帧动画)。接下来,我们将深入探讨这两种动画类型及其具体实现方法。 1. Tweened Animation (渐变动画) ...

    Androidanimation.doc

    Android 动画主要分为两类:Tweened Animation(渐变动画)和Frame-by-Frame Animation(逐帧动画)。这两种动画方式各有特点,可以根据不同的需求选择使用。 Tweened Animation 包括四种基本类型:AlphaAnimation...

    Android动画效果translate、scale、alpha、rotate详解

    Android 动画模式有两种:tweened animation(渐变动画)和 frame by frame(画面转换动画)。tweened animation 是指从一个状态渐变到另一个状态的动画效果,例如 alpha、scale、rotate 动画效果。frame by frame ...

    Android_动画效果

    本文档将详细介绍Android中的动画效果,并深入探讨两种主要的动画模式:渐变动画(Tweened Animation)与画面转换动画(Frame-by-Frame Animation),以及如何在XML文件中定义这些动画。 #### 二、Android动画类型 ...

    Android动画效果编程基础

    逐帧动画(Frame-by-Frame Animation)是一种基本的动画形式,其原理是通过快速连续显示多个静态图像帧来模拟动态效果。这种动画方式与GIF动画相似,适用于需要复杂动画效果的场景。在Android中,逐帧动画通常使用`...

    android 动画

    Frame-by-frame animation**:Tween动画是基于关键帧的,而frame-by-frame动画则需要逐帧绘制,适用于更复杂的动画场景。 - **LayoutTransition**:自动处理布局更改时的动画效果,如添加、删除或改变视图的大小。...

    【Android 基础】详解Animation 动画介绍和实现

    本文将深入探讨Android的基础Animation动画,包括动画类型、动画模式、如何在XML文件中定义动画以及具体的动画效果解析。 1. Animation动画类型: Android的animation系统主要包括四种基本类型,它们可以分为两类...

    android手机应用源码逐帧动画源码.rar

    在Android平台上,逐帧动画(Frame-by-Frame Animation)是一种常用的技术,用于创建连续的视觉效果,如动画短片或游戏中的角色动作。这个“android手机应用源码逐帧动画源码.rar”压缩包文件提供了关于如何在...

    Android的三种动画图形编程

    5、如果一切正常,那么可以分别看到帧动画(frame-by-frame)、布局动画(layout animation)和视图动画(view animation) 目的:动画效果可以让用户的体验感非常好。在“演示Android中的文字和图片特效控件的使用”资源...

    Android 逐帧动画示例

    本示例主要关注的是逐帧动画(Frame-by-Frame Animation),这是一种常见的动画实现方式,尤其适用于创建连续的动态效果,如人物行走、物体翻转等。逐帧动画通过连续播放一系列静态图片来达到动态视觉效果。 在...

    Android 动画分析

    在Android中,动画主要分为两大类:渐变动画(Tweened Animation)和帧动画(Frame-by-frame Animation)。 #### 二、Android动画类型 ##### 1. 渐变动画(Tweened Animation) 渐变动画是指在动画过程中视图的...

    Android编程之Animation动画详解

    2. Frame-by-frame Animations(帧动画): - 这种类型的动画通常用于播放一系列连续的图片,如GIF动画,通过按时间间隔逐帧显示Drawable资源来实现。 实现Tweened Animations的步骤如下: 1. 创建一个...

    Android程序研发源码Android 逐帧动画源码.zip

    在Android应用开发中,逐帧动画(Frame-by-Frame Animation)是一种常见的动画实现方式,尤其适用于游戏或复杂的交互效果。本资源"Android程序研发源码Android 逐帧动画源码.zip"提供了一个名为"AnimationDemo"的...

    android 动画基础

    根据实现方式的不同,Android动画主要分为两类:渐变动画(Tween Animation)和逐帧动画(Frame-by-Frame Animation)。此外,动画还可以通过XML文件或者Java代码来定义。 #### 二、动画类型 Android支持多种动画...

    android 几种动画

    2. **Frame-by-Frame Animation (帧动画)**:这种动画模式则是通过快速连续播放一系列不同的图像来模拟运动的效果。适用于复杂的动画场景。 #### 三、XML 文件中定义动画 要在 Android 应用中定义动画,首先需要...

Global site tag (gtag.js) - Google Analytics