`

玩转Android---2D图形及动画---Frame动画

 
阅读更多

Frame动画其实就是逐帧动画,用法也比Tween动画简单,只需要创建一个AnimationDrawable对象来表示Frame动画,然后通过addFrame方法把每一帧要显示的内容加进去就行了,最后通过start方法就可以播放这个动画了,通过还可以使用

setOneShot()方法来设置动画是否重复播放。

再这里,还需要设置图片的所在位置,首先要在res/anim目录下创建一个xml配置文件,用于存放图片资源的索引,配置的是

一个以<animation-list>根原素和<item>子元素

 

下面用3种方式来实现这个Frame动画

第一种:直接继承Activity,使用<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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="逐帧动画"
    />
<LinearLayout
   	android:layout_width="match_parent"
   	android:layout_height="wrap_content"
   	android:orientation="horizontal">
   	<Button
		android:id="@+id/start"
		android:layout_width="150dp"
		android:layout_height="wrap_content"
		android:text="开始播放动画"/>
	<Button
		android:id="@+id/stop"
		android:layout_width="150dp"
		android:layout_height="wrap_content"
		android:text="停止播放动画"/>
</LinearLayout>

<ImageView
	android:id="@+id/imgview"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_gravity="center_horizontal"
	android:background="@anim/birthday"
/>
</LinearLayout>

 res/anim/birthday.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/birthday1" android:duration="300"/>
	<item android:drawable="@drawable/birthday2" android:duration="300"/>
	<item android:drawable="@drawable/birthday3" android:duration="300"/>
	<item android:drawable="@drawable/birthday4" android:duration="300"/>
	<item android:drawable="@drawable/birthday5" android:duration="300"/>
	<item android:drawable="@drawable/birthday6" android:duration="300"/>
	<item android:drawable="@drawable/birthday7" android:duration="300"/>
	<item android:drawable="@drawable/birthday8" android:duration="300"/>
	<item android:drawable="@drawable/birthday9" android:duration="300"/>
</animation-list>

 FramesActivity.java

package com.loulijun.frames;

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

public class FramesActivity extends Activity {
    private AnimationDrawable frameanim;
    private Button start,stop;
    private ImageView img;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        img = (ImageView)findViewById(R.id.imgview);
        start = (Button)findViewById(R.id.start);
        stop = (Button)findViewById(R.id.stop);
        //获得背景色,并转换为AnimationDrawable对象
        frameanim = (AnimationDrawable)img.getBackground();
        
        //为按钮添加监听事件
        start.setOnClickListener(new Button.OnClickListener()
        {

			@Override
			public void onClick(View v) {
				//开始动画
				frameanim.start();
			}
        	
        });
        
        stop.setOnClickListener(new Button.OnClickListener()
        {

			@Override
			public void onClick(View v) {
				// 停止动画
				frameanim.stop();
			}
        	
        });
    }
}

 效果如下:具体自己下载运行,我只截了一张图,没有做成gif的图片


 

  • 大小: 48 KB
分享到:
评论

相关推荐

    Android-x86对于部分笔记本无法启动图形桌面的解决方案及相关调研1

    - VESA驱动是一种广泛支持的图形驱动,适用于大多数显卡,但不提供2D或3D加速功能。 - `uvesafb`是另一个framebuffer驱动,它依赖于`v86d`这个用户空间虚拟化守护进程,能更好地支持非x86架构。 4. **查阅官方...

    第9章--Android-2D动画.pptx

    第9章--Android-2D动画.pptx

    cocos2d-android-1资源:API文档

    在Android平台上,cocos2d-x是其主要实现,而“cocos2d-android-1”可能是该框架的一个特定版本。这个压缩包中的“cocos2d-android-1-doc”文件很可能是该版本的API文档,对于开发者来说是一份非常重要的参考资料。 ...

    Cocos2d-Android-1游戏开发

    在Android游戏开发中,Cocos2d-Android-1提供了一系列核心组件,包括场景管理、精灵动画、物理引擎、粒子系统、定时器和事件处理等。这些组件使得开发者能够轻松构建复杂的交互式游戏。例如,场景管理允许开发者组织...

    android-cocos2d-1

    Cocos2d-x支持2D图形渲染、动画、物理引擎、粒子系统、音频处理等功能,是许多独立开发者和大型游戏公司的首选工具。 二、安装与配置 1. 安装NDK(Native Development Kit):NDK是Android Studio用于处理原生代码...

    cocos2d-android jar包全套.zip

    "cocos2d-android jar包全套.zip"这个压缩包包含了在Android上使用Cocos2d开发游戏所需的所有核心库和依赖。 首先,让我们详细了解一下Cocos2d的主要组件: 1. **Cocos2d Engine**:这是Cocos2d的核心,提供了一...

    cosos2d-ios

    它基于开源的cocos2d-x项目,提供了丰富的功能集,包括场景管理、精灵动画、粒子系统、触摸事件处理、物理引擎集成等,极大地简化了iOS游戏开发的过程。 一、基础知识篇 1. **场景(Scenes)**:cocos2d-iOS中的...

    cocos2d-android-1

    《Cocos2d-android-1:开启Android游戏开发之旅》 Cocos2d-android-1是一套专为Android平台设计的游戏开发课程资源,它基于Cocos2d引擎,旨在帮助开发者掌握游戏开发的核心技术和流程。Cocos2d是一款广泛使用的开源...

    Android代码-基于Cocos2d-android-1开发的安卓游戏

    使用了Cocos2d-android-1引擎。 在写代码时,误将MonkeyKing写成了moneyKing(包名里) 第一版程序下载 http://pan.baidu.com/s/1o6lWW2m 第二版程序下载 http://pan.baidu.com/s/1dDHxwop 第三版程序下载 ...

    android游戏开发源码 体育游戏-----2D迷你桌球

    在本文中,我们将深入探讨如何基于给定的“android游戏开发源码 体育游戏-----2D迷你桌球”项目进行Android游戏开发。这个项目使用了Java编程语言(JDK 1.6.0_18版本)和Android SDK 2.1,开发环境为Eclipse 3.5.1。...

    Cocos2d-android-1学习笔记

    【Cocos2d-android-1学习笔记】 Cocos2d是一个开源的游戏开发框架,它为开发者提供了构建2D游戏、动态应用以及各种图形交互式体验的工具。在Android平台上,Cocos2d-x是一个非常流行的分支,它用C++编写,并且支持...

    Android-Game-2D-Puzzle:带有OpenGL动画2D图形的逻辑游戏

    《Android-Game-2D-Puzzle: OpenGL动画2D图形逻辑游戏开发详解》 在移动游戏领域,2D游戏以其独特的魅力和较低的硬件需求,始终占据着一席之地。本项目“Android-Game-2D-Puzzle”是一款基于OpenGL动画的2D逻辑游戏...

    cocos2d-android

    cocos2d-androidcocos2d-androidcocos2d-androidcocos2d-androidcocos2d-androidcocos2d-androidcocos2d-androidcocos2d-android

    cocos2d-x-v2:更新cocos2d-x 2.2.6的库并支持Android Studio,64位Android

    cocos2d-x 游戏类 通过PayPal支持更新第三库: $ 10,$ 50,$ 100等。 经过测试 带有ndk-r10d的cocos命令3.8.1 cocos run -p android --android-studio --app-abi armeabi-v7a:arm64-v8a cocos run -p android --...

    Cocos2d-android平台基于BOX-2d的重力滚球游戏示例

    《Cocos2d-android平台基于BOX-2d的重力滚球游戏示例解析》 Cocos2d是一款广泛应用于游戏开发的开源框架,其在移动设备上的应用版本Cocos2d-android,为开发者提供了在Android平台上构建游戏的强大工具。本示例中的...

    Android代码-android-page-curl

    The android-page-curl is a 2D View which simulates a page curl effect. Without OpenGL, only the android canvas has been used, so that it can be used in any version of Android! Showcase Page Turner The...

    帧动画frame-by-frame animation

    帧动画(Frame-by-Frame Animation)是一种在计算机图形学和游戏开发中常用的技术,它通过逐帧播放一系列图像来创建连续的动态效果。在给定的场景中,“点击图片的右边,则图片向右移动,到屏幕边缘停止;点击图片...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...

Global site tag (gtag.js) - Google Analytics