Android学习之补间动画

开发者无需逐一定义每一帧,只需要定义动画的关键帧即可.

具体实现需要用到Interpolator,Interpolator负责控制动画的变化速度,这就使得基本的动画效果(Alpha,Scale,Translate,Rotate)能以匀速变化、加速、减速、抛物线速度等各种速度变化。Interpolator是一个接口,它定义了所有Interpolator都需要实现的float getInterpolation(float input)方法,开发者通过实现Interpolator来实现动画变化速度。

看下面一个实例

anim.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定动画匀速改变 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/linear_interpolator">
	<!-- 定义缩放变换 -->
	<scale android:fromXScale="1.0"
		android:toXScale="0.01"
		android:fromYScale="1.0"
		android:toYScale="0.01"
		android:pivotX="50%"
		android:pivotY="50%"
		android:fillAfter="true"
		android:duration="3000"/>
	<!-- 定义透明度的变换 -->
	<alpha
		android:fromAlpha="1"
		android:toAlpha="0.05"
		android:duration="3000"/>
	<!-- 定义旋转变换 -->
	<rotate
		android:fromDegrees="0"
		android:toDegrees="1800"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="3000"/>
</set>

reverse.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定动画匀速改变 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/linear_interpolator"
	android:startOffset="3000">
	<!-- 定义缩放变换 -->
	<scale android:fromXScale="0.01"
		android:toXScale="1"
		android:fromYScale="0.01"
		android:toYScale="1"
		android:pivotX="50%"
		android:pivotY="50%"
		android:fillAfter="true"
		android:duration="3000"/>
	<!-- 定义透明度的变换 -->
	<alpha
		android:fromAlpha="0.05"
		android:toAlpha="1"
		android:duration="3000"/>
	<!-- 定义旋转变换 -->
	<rotate
		android:fromDegrees="1800"
		android:toDegrees="0"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="3000"/>
</set>

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;

public class TweenAnim extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ImageView flower = (ImageView)
			findViewById(R.id.flower);
		// 加载第一份动画资源
		final Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim);
		// 设置动画结束后保留结束状态
		anim.setFillAfter(true);
		// 加载第二份动画资源
		final Animation reverse = AnimationUtils.loadAnimation(this, R.anim.reverse);
		// 设置动画结束后保留结束状态
		reverse.setFillAfter(true);
		Button bn = (Button) findViewById(R.id.bn);
		final Handler handler = new Handler()
		{
			public void handleMessage(Message msg)
			{
				if (msg.what == 0x123)
				{
					flower.startAnimation(reverse);
				}
			}
		};
		bn.setOnClickListener(new OnClickListener()
		{
			public void onClick(View arg0)
			{
				flower.startAnimation(anim);
				// 设置2秒后启动第二个动画
				new Timer().schedule(new TimerTask()
				{
					public void run()
					{
						handler.sendEmptyMessage(0x123);

					}
				}, 2000);
			}
		});
	}
}
时间: 2024-10-02 05:21:59

Android学习之补间动画的相关文章

Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果

如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 某天看到京东商城首页的滑动广告的Banner,在流动切换的时候有立体的动画效果,感觉很有意思,然后研究了下如何实现.  废话不多说,接下来我会讲述如何实现这种效果,以及如何根据需求自定义出新的动画效果进行扩展实现. 首先还是看一下京东商城上的效果:                                                  像一般做这种效果怎么办呢?我的建议还是先在github或者

Android动画之补间动画(Tween Animation)基础学习_Android

前言 之前说过了在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画).渐变动画是通过对场景里的对象不断做图像变换(平移.缩放.旋转等)产生动画效果.帧动画则是通过顺序播放事先准备好的图像来产生动画效果,和电影类似. 小编也和大家分享了逐帧动画的基础知识,下面我们就来学习下Android中逐帧动画的基础知识. 原理 : 给出开始和结束两个关键帧,两个关键帧之间的插补帧是由计算机自动运算而得到的. 分类 :

Android动画之补间动画(Tween Animation)基础学习

前言 之前说过了在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画).渐变动画是通过对场景里的对象不断做图像变换(平移.缩放.旋转等)产生动画效果.帧动画则是通过顺序播放事先准备好的图像来产生动画效果,和电影类似. 小编也和大家分享了逐帧动画的基础知识,下面我们就来学习下Android中逐帧动画的基础知识. 原理 : 给出开始和结束两个关键帧,两个关键帧之间的插补帧是由计算机自动运算而得到的. 分类 :

Android Animation动画详解(一): 补间动画

前言 你有没有被一些APP中惊艳的动画效果震撼过,有没有去思考,甚至研究过这些动画是如何实现的呢? 啥?你没有思考,更没有研究过? 好吧,那跟着我一起来学习下如何去实现APP中那些让我们惊羡的动画特效吧,come on! 一.Android的动画类型 Tween Animation 补间动画 Frame Animation 帧动画 Layout Animation 布局动画 Property Animation 属性动画 总体来讲,Android中的动画就这四种,而我们常常在APP中看到的动画多

Android帧动画、补间动画、属性动画用法详解_Android

在安卓开发中,经常会使用到一些动画,那么在开发中,如何使用这些动画呢? 帧动画:不是针对View做出一些形状上的变化,而是用于播放一张张的图片,例如一些开机动画,类似于电影播放,使用的是AnimationDrawable来播放帧动画 res/drawable  <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.andro

android 帧动画,补间动画,属性动画的简单总结

帧动画--FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建animation-list为根节点的资源文件 <animation-list android:oneshot="false"> <item android:drawable="@drawable/img1" android:duration="100

Android帧动画、补间动画、属性动画用法详解

在安卓开发中,经常会使用到一些动画,那么在开发中,如何使用这些动画呢? 帧动画:不是针对View做出一些形状上的变化,而是用于播放一张张的图片,例如一些开机动画,类似于电影播放,使用的是AnimationDrawable来播放帧动画 res/drawable <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.androi

【Android开发】动画范例2-旋转、平移、缩放和透明度渐变的补间动画

实现旋转.平移.缩放和透明度渐变的补间动画,具体实现如下: 1.在新建项目的res目录中,创建一个名为anim的目录,并在该目录中创建实现旋转.平移.缩放和透明度渐变的动画资源文件. 透明度渐变的动画资源文件anim_alpha.xml(完全不透明->完全透明->完全不透明) <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.an

Android补间动画效果

Android的SDK提供了三种类型的动画,分别是补间动画.逐帧动画和插值属性动画.下面先介绍第一种动画效果-补间动画. 补间动画可以应用于View,让开发者可以定义一些关于大小.位置.旋转和透明度的改变效果,达到让View的内容动起来的效果. 补间动画是使用Animation类创建的,它有4个直接子类,分别实现不同的动画效果,分别为: AlphaAnimation 渐变透明度动画效果,即淡入淡出效果 ScaleAnimation 渐变尺寸伸缩动画效果,即缩放效果 TranslateAnimat