`

AnimationDrable实现Frame动画

阅读更多
效果图:
[img]

[/img]
工程结构图:
[img]

[/img]

布局文件:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/screen"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical">
	<LinearLayout
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:orientation="vertical">
		<ImageView
			android:src="@drawable/jay"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent" />
		<TextView
			android:id="@+id/textView0"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:textColor="#000000"
			android:textSize="18dip"
			android:background="#00FF00"
			android:text="Android游戏开发的世界"
			android:gravity="center_vertical|center_horizontal" />
		<TextView
			android:id="@+id/textView1"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:textColor="#FFFFFF"
			android:textSize="18dip"
			android:background="#0000FF"
			android:text="Android 游戏开发之使用AnimationDrable实现Frame动画"
			android:gravity="center_vertical|center_horizontal" />
		<Button
			android:id="@+id/button0"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:text="这是一个简单的Frame动画" />

	</LinearLayout>
</ScrollView>

simple.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"
    >
<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
 <Button
   android:id="@+id/button0"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="播放动画"
 />
 
  <Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="停止动画"
 />
 </LinearLayout>
   
 <RadioGroup android:id="@+id/radiogroup"
   	 android:layout_width="wrap_content"
   	 android:layout_height="wrap_content"
  	 android:orientation="horizontal">
   <RadioButton
  	 android:id="@+id/checkbox0"
  	 android:layout_width="wrap_content"
  	 android:layout_height="wrap_content"
  	 android:checked="true"
  	 android:text="单次播放"
   />
  <RadioButton
   	android:id="@+id/checkbox1"
   	android:layout_width="wrap_content"
   	android:layout_height="wrap_content"
   	android:text="循环播放"
   />
   </RadioGroup>
   
    <TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="拖动进度条修改透明度(0 - 255)之间"
	/> 
  <SeekBar
	android:id="@+id/seekBar"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:max="256"
	android:progress="256"/>
  <ImageView
   android:id="@+id/imageView"
   android:background="@anim/animation"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
 />
</LinearLayout>


/res/anim/animation.xml
 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
  <item android:drawable="@drawable/a" android:duration="100" /> 
  <item android:drawable="@drawable/b" android:duration="100" /> 
  <item android:drawable="@drawable/c" android:duration="100" /> 
  <item android:drawable="@drawable/d" android:duration="100" /> 
  <item android:drawable="@drawable/e" android:duration="100" /> 
  <item android:drawable="@drawable/f" android:duration="100" /> 
  <item android:drawable="@drawable/g" android:duration="100" /> 
  <item android:drawable="@drawable/h" android:duration="100" /> 
  <item android:drawable="@drawable/i" android:duration="100" /> 
  <item android:drawable="@drawable/j" android:duration="100" /> 
  </animation-list>


ControlActivity
package cn.m15.xys;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
 * 
 * @author tiger
 * email:xuanyusong@gmail.com
 * blog:http://blog.csdn.net/xys289187120
 */
public class ControlActivity extends Activity {
   
    Context mContext = null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mContext = this;
       
        /**发送信息**/
        Button botton0 = (Button)findViewById(R.id.button0);
        botton0.setOnClickListener(new OnClickListener() {
	    
	    @Override
	    public void onClick(View arg0) {
		 Intent intent = new Intent(mContext,SimpleActivity.class); 
		 startActivity(intent);
	    }
	}); 
   
    }
}


SimpleActivity
package cn.m15.xys;




import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SimpleActivity extends Activity {

    /**播放动画按钮**/
    Button button0 = null;
  
    /**停止动画按钮**/
    Button button1 = null;
    
    /**设置动画循环选择框**/
    RadioButton radioButton0= null;
    RadioButton radioButton1= null;
    RadioGroup  radioGroup = null;
  
    /**拖动图片修改Alpha值**/
    SeekBar seekbar = null;
  
    /**绘制动画View**/
    ImageView imageView = null;
   
    /**绘制动画对象**/
    AnimationDrawable animationDrawable = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.simple);

	/**拿到ImageView对象**/
	imageView = (ImageView)findViewById(R.id.imageView);
	/**通过ImageView对象拿到背景显示的AnimationDrawable**/
	animationDrawable = (AnimationDrawable) imageView.getBackground();
	
	
	/**开始播放动画**/
	button0 = (Button)findViewById(R.id.button0);
	button0.setOnClickListener(new OnClickListener() {
	    
	    @Override
	    public void onClick(View arg0) {
		/**播放动画**/
		if(!animationDrawable.isRunning()) {
		    animationDrawable.start();
		}
	    }
	});
	
	/**停止播放动画**/
	button1 = (Button)findViewById(R.id.button1);
	button1.setOnClickListener(new OnClickListener() {
	    
	    @Override
	    public void onClick(View arg0) {
		/**停止动画**/
		if(animationDrawable.isRunning()) {
		    animationDrawable.stop();
		}
	    }
	});
	/**单次播放**/
	radioButton0 = (RadioButton)findViewById(R.id.checkbox0);
	/**循环播放**/
	radioButton1 = (RadioButton)findViewById(R.id.checkbox1);
	/**单选列表组**/
	radioGroup = (RadioGroup)findViewById(R.id.radiogroup);
	radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
	    
	    @Override
	    public void onCheckedChanged(RadioGroup radioGroup, int checkID) {
		if(checkID == radioButton0.getId()) {
		    //设置单次播放
		    animationDrawable.setOneShot(true);
		}else if (checkID == radioButton1.getId()) {
		    //设置循环播放
		    animationDrawable.setOneShot(false);
		}
		
		//发生改变后让动画重新播放
		animationDrawable.stop();
		animationDrawable.start();
	    }
	});
	
	/**监听的进度条修改透明度**/
	seekbar = (SeekBar)findViewById(R.id.seekBar);
	seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
	    @Override
	    public void onStopTrackingTouch(SeekBar seekBar) {
		
	    }
	    @Override
	    public void onStartTrackingTouch(SeekBar seekBar) {
		
	    }
	    @Override
	    public void onProgressChanged(SeekBar seekBar, int progress, boolean frameTouch) {
		/**设置动画Alpha值**/
		animationDrawable.setAlpha(progress);
		/**通知imageView 刷新屏幕**/
		imageView.postInvalidate();
	    }
	});
	
    }
}


图片就不上传了,哈哈哈!
  • 大小: 30 KB
  • 大小: 10.6 KB
分享到:
评论

相关推荐

    Android 游戏开发之使用AnimationDrable实现Frame动画

    在选择合适的动画实现方式时,开发者应考虑性能、兼容性以及需求的复杂性。 通过阅读“Android 游戏开发之使用AnimationDrable实现Frame动画”相关资料,你可以深入理解`AnimationDrawable`的工作原理,并学习如何...

    Frame动画

    在Android中,Frame动画主要由`AnimationDrawable`类来实现。这个类是一个可绘制对象,可以作为视图的背景,并且能够按照指定的时间间隔依次显示一组图片。这些图片通常存储在XML资源文件中,通过`&lt;animation-list&gt;`...

    Frame动画在悬浮窗口上的实现

    本教程将详细介绍如何在悬浮窗口(Floating Window)上实现Frame动画。 首先,我们需要了解悬浮窗口的概念。在Android中,悬浮窗口通常通过实现Service并使用WindowManager接口来创建。它可以在应用的主界面或其他...

    简单的Frame动画

    在这个"简单的Frame动画"项目中,开发者实现了一个由6张图片组成的帧动画。接下来,我们将深入探讨帧动画的工作原理、如何在Android中创建以及相关的重要知识点。 帧动画的核心思想是将一系列连续的图片快速地展示...

    Android---Frame动画

    在Android开发中,帧动画(Frame Animation)是一种常见的动画效果,它通过连续播放一系列静态图像来模拟动态效果。本文将深入探讨如何在Android项目中应用帧动画,包括使用`AnimationDrawable`和`ImageView`实现这...

    Tween和Frame动画的一个小总结

    其次,Frame动画(帧动画)是通过顺序播放预先准备好的一系列图像来实现动画效果,类似于播放电影胶片。在Android中,帧动画同样可以通过XML文件定义,每个`&lt;item&gt;`标签代表一帧图像。以下是一个简单的帧动画示例: ...

    frameAnimation动画效果

    帧动画(Frame Animation)是Android系统提供的一种基本的动画机制,它通过连续播放一系列静态图像来创造出动态的效果,类似于我们小时候看的翻页动画书。在手机软件开发中,帧动画常用于创建简单的过渡效果、加载...

    Android frame 帧动画demo

    在Android开发中,帧动画(Frame Animation)是一种常见的动态效果实现方式,它通过连续播放一系列静态图像来模拟连续动作,类似于传统的电影制作原理。在本示例中,“Android帧动画demo”将展示如何在Android应用中...

    Android Frame动画

    - **理解动画逻辑**:腾讯QQ的上拉刷新动画通常包含一个旋转的箭头和一个下拉指示条,通过改变这两部分的动画实现上拉时的视觉效果。 - **组合动画**:可以结合使用帧动画和补间动画(Tween Animation)来完成这个...

    Frame动画简单的应用演示

    在Android开发中,动画是提升用户体验的关键因素,而帧动画(Frame Animation)是其中一种简单易用的动画形式。帧动画通常用于实现一系列连续图片播放的效果,如动图或者简单的视频效果。本节将深入探讨帧动画的实现...

    Android Animation Frame逐帧动画

    与Tween动画不同,Tween动画是通过对对象属性(如平移、旋转、缩放等)进行平滑过渡来实现动画效果,而Frame动画则是一帧一帧地展示图片来创建动画。 **XML实现Frame动画** 在Android中,Frame动画通常通过XML资源...

    Frame动画+按键监听(实现窗户打开关闭操作)

    在本文中,我们将深入探讨如何使用`Frame动画`和`按键监听`来实现一个基本的窗户打开和关闭操作。在计算机编程,特别是图形用户界面(GUI)开发中,这种功能通常用于模拟现实世界中的交互,比如点击按钮打开或关闭一...

    Android Animation Frame逐帧动画2

    在Android中,我们可以使用`AnimationDrawable`类来实现Frame动画。 **实现方式:** 1. **XML方式**:通常在res/anim目录下创建一个xml文件,定义帧的顺序、持续时间和重复行为。例如,可以设置`&lt;animation-list&gt;`...

    android动画之frame

    帧动画(Frame Animation)是Android提供的一种简单而直观的动画实现方式,适用于实现一系列静态图片按顺序播放的效果,类似于传统的动画胶片。本篇将深入探讨Android帧动画的概念、原理以及如何通过实例进行创建。 ...

    FrameAnimation帧动画以及LruCache优化的自定动画

    本DEMO深入探讨了三种实现帧动画的方法,并结合LruCache内存缓存策略来优化性能,防止因大量图片加载导致的内存溢出(OOM)问题。 一、FrameAnimation+xml方式 在Android中,通过XML资源文件可以方便地创建帧动画。...

    Frame 帧动画

    在Android开发中,帧动画(Frame Animation)是一种常见的动画实现方式,它通过连续播放一系列静态图像来创造出动态效果。帧动画适用于那些简单的、基于图片序列的动画,如按钮的按下和抬起状态变化、加载动画等。...

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

    这篇博文"玩转Android---2D图形及动画---Frame动画"显然会深入探讨如何在Android平台上创建和管理帧动画。帧动画是一种将一系列静态图像连续播放以产生动态效果的技术,常见于游戏和应用程序中的过渡效果。 首先,...

    Android情侣短信软件Frame动画在悬浮窗口上的实现

    在Android开发中,实现一个情侣短信软件,其中的Frame动画在悬浮窗口上的应用是一个吸引用户注意力和提升用户体验的重要设计。本文将深入探讨如何在Android应用中实现这一功能,主要涉及的技术点包括Android权限管理...

Global site tag (gtag.js) - Google Analytics