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

android Tween动画概括+示例

阅读更多
    我们大家都知道android平台提供了两种动画,一种是Tween动画,即通过对场景里的对象不断进行图像变换(平移,缩放,旋转) 来产生动画效果; 第二种就是 Frame 动画,即顺序播放事先做好的图像,和电影类似。

    首先来分析 Tween动画,Tween动画通过对View 的内容完成一系列的的图形变换(包括平移、缩放、旋转、改变透明度)来实现动画效果。它主要包括以下四种动画效果:
Alpha: 渐变透明度动画效果 以前也写过一个例子 -->http://byandby.iteye.com/blog/828799
Scale: 渐变尺寸伸缩动画效果。
Translate: 画面转移位置移动动画效果
Rotate: 画面转移旋转动画效果。

    具体来讲,Tween动画是通过预先定义一组指令,这些指令指定了图形变换的类型、触发时间、持续时间。程序沿着时间线执行这些指令就可以实现动画效果。因此我们首先需要定义Animation动画对象,然后设置该动画的一些属性,最后通过 startAnimation 方法来开始动画。网上的大多数例子都是以 xml文件的形式配置的 我们这里用代码实现一下。其实可能也不难就是参数有些多。下面就介绍 各个动画的属性:
 
  AlphaAnimation(float fromAlpha, float toAlpha)
  功能:构建一个渐变透明度动画
  参数: fromAlpha 为动画起始透明度;toAlpha为动画结束透明度(0.0表示完全透明,1.0表示完全不透明)。
  
  ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
   功能:构建一个渐变尺寸伸缩动画。
   参数:fromX、toX 分别是起始和结束时X坐标上的伸缩尺寸。fromY、toY分别是起始和结束时 Y坐标上的伸缩尺寸。pivotXValue、pivotYValue 分别为动画相对于物件的X、Y坐标的开始位置  pivotYType pivotXType 分别为x、y的伸缩模式。

   TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
    功能:构建一个画面转换位置移动动画。
    参数:fromXDelta、fromXDelta分别为起始坐标; toXDelta、toYDelta分别为结束坐标。

    RotateAnimation(float fromDegress, float toDegress, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
    功能:构建一个旋转动画。
    参数:fromDegress 为开始的角度; toDegress 为结束的角度。 pivotXType、pivotYType分别为x、y 的伸缩模式。pivotXValue、pivotYValue 分别为伸缩动画相对于x、y的坐标的开始位置。

   setDuration(long durationMillis)
   功能:设置动画显示的时间  以毫秒为单位。

   startAnimation(Animation animation)
   功能:开始播放动画
   参数:animation为要播放的动画。
  
   我们下边这个例子 通过 手机的上下左右 来实现这四种动画。








 
  Activity01
package xiaohang.zhimeng;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;

public class Activity01 extends Activity {

	private GameView mGameView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		mGameView = new GameView(this);

		setContentView(mGameView);
	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		if (mGameView == null) {
			return false;
		}
		mGameView.onKeyUp(keyCode, event);
		return true;
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (mGameView == null) {
			return false;
		}
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			this.finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}


GameView
package xiaohang.zhimeng;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.view.KeyEvent;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;

public class GameView extends View{
	
	//定义Alpha动画
	private Animation	mAnimationAlpha = null;
	
	//定义Scale动画
	private Animation	mAnimationScale = null;
	
	//定义Translate动画
	private Animation	mAnimationTranslate = null;
	
	//定义Rotate动画
	private Animation 	mAnimationRotate 	= null;
	
	//定义Bitmap对象
	Bitmap	mBitQQ							= null;
	
	public GameView(Context context) {
		super(context);
		
		//装载资源
		mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.xh)).getBitmap();
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		
		//绘制图片
		canvas.drawBitmap(mBitQQ, 0, 0, null);
	}
	
	public boolean onKeyUp(int keyCode, KeyEvent event){
		switch (keyCode) {
		case KeyEvent.KEYCODE_DPAD_UP:
			//创建Alpha动画
			mAnimationAlpha = new AlphaAnimation(0.1f,1.0f);
			//设置动画时间
			mAnimationAlpha.setDuration(3000);
			//开始播放动画
			this.startAnimation(mAnimationAlpha);
			break;
		case KeyEvent.KEYCODE_DPAD_DOWN:
			//创建Scal动画
			mAnimationScale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
												 Animation.RELATIVE_TO_SELF, 0.5f,
												 Animation.RELATIVE_TO_SELF, 0.5f
												 );
			//设置动画的时间
			mAnimationScale.setDuration(1000);
			//开始播放动画
			this.startAnimation(mAnimationScale);
			break;
		case KeyEvent.KEYCODE_DPAD_LEFT:
			//创建Translate动画
			mAnimationTranslate = new TranslateAnimation(10,100,10, 100);
			//设置动画的时间
			mAnimationTranslate.setDuration(1000);
			//开始播放动画
			this.startAnimation(mAnimationTranslate);
			break;
		case KeyEvent.KEYCODE_DPAD_RIGHT:
			//创建Rotate动画
			mAnimationRotate = new RotateAnimation(0.0f, +360,
													Animation.RELATIVE_TO_SELF,0.5f,
													Animation.RELATIVE_TO_SELF,0.5f);
			//设置动画的时间
			mAnimationRotate.setDuration(1000);
			//开始播放动画
			this.startAnimation(mAnimationRotate);
			break;
		}
		return true;
	}

}

 
  这样的效果也可以通过配置xml文件实现大家可以去看我以前推荐过一些资料 里边有更多关于Animation动画的内容。http://byandby.iteye.com/blog/827527

源码可以去附件下载
  • 大小: 38.6 KB
  • 大小: 21.7 KB
  • 大小: 19.1 KB
  • 大小: 35 KB
3
0
分享到:
评论
1 楼 yangmaolinpl 2013-06-24  
向楼主学习。

相关推荐

    android tween动画代码示例及详解

    在Android开发中,动画是提升用户体验的关键因素之一。Tween动画,又称补间动画,是Android提供的基础动画系统...通过实践和调试这些代码,你可以掌握Android动画系统的核心概念,从而在开发中创造出更丰富的视觉效果。

    android Tween动画示例代码

    在"android Tween动画示例代码"中,你可能会看到如何创建这些不同类型的Tween动画以及如何组合它们的示例。文件名"xh_05_15_Test"可能包含了这些示例代码的详细实现,你可以通过查看这个文件来深入了解和学习Android...

    Android Tween动画源码

    Tween动画,又称平移动画,是Android提供的基础动画类型,主要用于对象的透明度、缩放、平移和旋转等属性的变化。让我们深入探讨Android Tween动画的源码,理解其工作原理。 首先,`alpha`动画涉及到的是对象的透明...

    android Tween动画的xml实现

    Tween动画,又称补间动画,是Android提供的基础动画类型,主要用于对象的平移、旋转、缩放和透明度变化等效果。本篇文章将深入探讨如何通过XML在Android中实现Tween动画。 首先,让我们了解Tween动画的基本原理。...

    Android动画之Tween动画实现

    Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变);第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。 本例子...

    Android 游戏开发之Tween动画的实现

    它是Android动画系统中的一个重要组件,用于执行基于属性的动画。通过`ObjectAnimator.ofFloat()`或`ObjectAnimator.ofInt()`方法,我们可以指定目标对象和要动画化的属性。例如,要让一个View平滑地移动,可以创建...

    安卓动画效果相关-android开发中的Tween动画动画演示demo。此demo为androidstudio2.0所写.rar

    通过学习和实践这个Tween动画的演示demo,开发者可以深入理解Android动画机制,为自己的应用增添生动有趣的交互体验。同时,也可以在此基础上探索更高级的动画技术,如属性动画(Property Animation)和视图动画...

    Android---Tween动画

    Android---Tween动画 运用了4种Tween的动画效果,包括: rotate(旋转),scale(伸缩), alpha(透明度),translate(平移) 以及tween(综合4种效果)

    Android Tween动画的实现

    首先,Tween动画的基础是`android.view.animation.Animation`类,它是所有Android动画的基类。为了创建一个Tween动画,我们需要继承这个类或使用已提供的子类,如`TranslateAnimation`(平移)、`ScaleAnimation`...

    Tween动画完全解析

    在Android开发中,Android SDK提供了Tween动画的支持,位于`android.view.animation`包下,包含如TranslateAnimation、ScaleAnimation、AlphaAnimation等类,分别用于处理平移、缩放和透明度的变化。 对于一个Tween...

    Tween 动画的旋转缩放透明度和平移 demo

    在本示例中,“Tween动画的旋转缩放透明度和平移 demo”着重展示了如何通过Tween动画实现对象的旋转、缩放、透明度变化和移动效果。 首先,Tween动画的旋转功能允许我们以平滑的方式改变对象的角度。这通常通过设置...

    tween动画动作集

    这个“tween-engine-demo.jar”文件很可能是一个Tween动画引擎的示例库,它包含了实现Tween动画所需的各种类和方法。开发者可以导入这个库,然后根据需求创建和控制动画。"data"可能包含了一些配置文件或者资源,...

    Android基础——Tween动画、Drawable动画、Property动画、MaterialDesign动画、Trasition动画

    综上所述,Android动画系统为开发者提供了多种方式来增强应用的视觉表现力。Tween动画适合简单的动画需求,Drawable动画适合创建帧动画,Property动画则提供了强大的属性动画功能,Material Design动画则为应用带来...

    android Tween动画

    在TestAnimation这个项目中,你可能找到了对应的XML动画资源文件和对应的Java或Kotlin代码示例,通过运行这些示例,你可以直观地看到每个Tween动画效果的实际表现,进一步理解和掌握Android Tween动画的使用。...

    Android xml形式实现Tween动画

    在项目`AnimationTest`中,你可以找到演示以上所有动画效果的示例代码,这将帮助你更好地理解和应用这些XML Tween动画到实际项目中。通过实践,你可以进一步探索如何调整动画参数以实现更精细的控制,或者与其他动画...

    Android Animation动画(Tween动画,xml形式)

    该Demo,主要以xml形式实现了Animation动画中的Tween动画(另一种动画Frame动画Demo,稍后奉上),Tween动画的另一种实现形式是直接在代码中实现,相关Demo已上传,有需要的读者请到我的资源文件中下载即可。

    android tween

    补间动画是Android动画系统的一部分,允许开发者在指定时间内改变一个或多个属性,如大小(scale)、旋转(rotate)、位置(translate)和透明度(alpha),从而实现动态效果。 补间动画的工作原理是通过改变对象的...

    Android Tween Animation动画效果详解

    Android Tween Animation动画的使用demo,以及自定义动画,原理解析,相关博客: http://blog.csdn.net/w18756901575/article/details/53081551

    android 游戏开发之Tween动画的实现

    在Android游戏开发中,Tween动画是一种非常常见的动画技术,它主要用于在两个或多个属性值之间进行平滑的过渡,从而创造出动态效果。Tween动画在不涉及复杂图形变换的情况下,能够轻松实现物体位置、大小、透明度等...

    tween动画演示

    在压缩包中的“Tween”文件可能包含了示例代码、教程资源或者预览图像,用于展示如何创建和实现上述Tween动画效果。进一步学习这些资源,可以提升你对Tween动画的理解和实际操作能力,帮助你在项目中创建更加生动和...

Global site tag (gtag.js) - Google Analytics