Android动画介绍-Tween Animation

3.0以前,android支持两种动画模式,Tween Animation,Frame Animation

在android3.0中又引入了一个新的动画系统:Property Animation

这三种动画模式在SDK中被称为Property Animation,View Animation,Drawable Animation

下面介绍:Tween Animation

View Animation(Tween Animation):补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。

提供了旋转,移动,缩放,平移等效果,可以使用xml构建动画,也可以使用代码构建动画

xml构建的动画: 在res/anim 创建xml文件,使用的节点有:<alpha>,<scale>,<translate>,<rotate>

可以是使用将动画效果放到集合中,可以产生不一样的效果,默认的是同时执行,

也可以使用startOffset属性指定该动画延迟执行时间,这样可以分开执行效果

下面以Xml构建代码为例:

alpha.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="1000"
        android:fillAfter="false"
        android:fromAlpha="1.0"
        android:toAlpha="0" >
    </alpha>

</set>

rotate.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="1000"
        android:fillAfter="false"
        android:fromDegrees="0"
        android:pivotX="0.5"
        android:pivotY="0.5"
        android:toDegrees="360" >
    </rotate>

</set>

scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <scale
        android:duration="1000"
        android:fillAfter="false"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="0"
        android:toYScale="0" >
    </scale>

</set>

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fillAfter="false"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="200"
        android:toYDelta="200" />

</set>

set.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="1000"
        android:fillAfter="false"
        android:fromAlpha="1.0"
        android:toAlpha="0.5" >
    </alpha>

    <scale
        android:duration="1000"
        android:fillAfter="false"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:startOffset="1000"
        android:toXScale="0.5"
        android:toYScale="0.5" >
    </scale>

    <rotate
        android:duration="1000"
        android:fillAfter="false"
        android:fromDegrees="0"
        android:pivotX="0.5"
        android:pivotY="0.5"
        android:startOffset="2000"
        android:toDegrees="360" >
    </rotate>

    <translate
        android:duration="1000"
        android:fillAfter="false"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:startOffset="3000"
        android:toXDelta="200"
        android:toYDelta="200" />

</set>

使用方法:

activity_tween.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/alpha"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:text="alpha"
        android:textSize="20sp" />

    <Button
        android:id="@+id/scale"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:text="scale"
        android:textSize="20sp" />

    <Button
        android:id="@+id/rotate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:text="rotate"
        android:textSize="20sp" />

    <Button
        android:id="@+id/translate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:text="translate"
        android:textSize="20sp" />

    <Button
        android:id="@+id/set"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:text="set"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/target"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="clip_horizontal"
        android:layout_margin="30dp"
        android:src="@drawable/image" />

</LinearLayout>

TweenActivity.java

public class TweenActivity extends Activity implements OnClickListener {
	private Button alpha;
	private Button scale;
	private Button rotate;
	private Button translate;
	private Button set;
	private ImageView target;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_tween);
		initView();
		setListener();
	}

	private void initView() {
		alpha = (Button) findViewById(R.id.alpha);
		scale = (Button) findViewById(R.id.scale);
		rotate = (Button) findViewById(R.id.rotate);
		translate = (Button) findViewById(R.id.translate);
		set = (Button) findViewById(R.id.set);
		target = (ImageView) findViewById(R.id.target);
	}

	private void setListener() {
		alpha.setOnClickListener(this);
		scale.setOnClickListener(this);
		rotate.setOnClickListener(this);
		translate.setOnClickListener(this);
		set.setOnClickListener(this);
		target.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.alpha:
			startAnimation(R.anim.alpha);
			break;
		case R.id.scale:
			startAnimation(R.anim.scale);
			break;
		case R.id.rotate:
			startAnimation(R.anim.rotate);
			break;
		case R.id.translate:
			startAnimation(R.anim.translate);
			break;
		case R.id.set:
			startAnimation(R.anim.set);
			break;

		default:
			break;
		}

	}

	public void startAnimation(int animaXml) {
		Animation animation = AnimationUtils.loadAnimation(
				getApplicationContext(), animaXml);
		target.startAnimation(animation);
	}
}

获取Animation:Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), animaXml);

给View设置动画:target.startAnimation(animation);

xml文件构建动画

参考:http://blog.csdn.net/forwardyzk/article/details/42266015

代码构建动画:

参考: http://blog.csdn.net/forwardyzk/article/details/42387247

效果图:

时间: 2024-10-12 17:05:16

Android动画介绍-Tween Animation的相关文章

Android动画学习——Tween Animation

目录 目录 Android动画学习 Tween Animation scale动画调节尺寸 alpha动画调节透明度 rotate动画旋转 translate动画平移 Android动画学习 android中动画分为3种: Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即是一种渐变动画. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画. Property Animation:属性动画,通过动态地改变对象的属性从而达

android中的动画之变换动画(Tween Animation)

android中有四大动画,它们分别是:变换动画(Tween Animation),帧动画(frame Animation),布局动画(layout Animation),属性动画(Property Animation ).今天我在这里简单的说下变换动画. 首先我们来说下animation种的那些属性(这些都是动画中的通用属性) xml属性 java方法 解释 android:detachWallpaper setDetachWallpaper(booean) 是否在在壁纸上运行 android

【转】android动画之Tween动画 (渐变、缩放、位移、旋转)

原文:http://blog.csdn.net/feng88724/article/details/6318430 Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 下面就讲一下Tweene Animations. 主要类: Animation   动画 AlphaAnimation 渐变透明度 RotateAnimation

Android ViewAnimation(tween animation补间动画)文档教程

XML注意事项: 在res/anim/目录下,XML文件只能有 <alpha>, <scale>, <translate>, <rotate>中一个根元素,set标签下默认动画同时进行,想要顺序进行需要startOffset元素. 注意pivotX动画中X的中间坐标,如旋转:50是指相对父View的50%,50%是相对自身View的50% 例子: <set android:shareInterpolator="false">

【Android 动画】View Animation详解(一)

安卓平台目前提供了两大类动画,在Android 3.0之前,一大类是View Animation,包括Tween animation(补间动画),Frame animation(帧动画),在android3.0中又引入了一个新的动画系统:property animation,即属性动画.本篇文章主要介绍View Animation的基本使用方法与技巧,属性动画将在下一篇博文中介绍. Tween动画可以执行一系列简单变换(位置,大小,旋转,缩放和透明度).所以,如果你有一个TextView对象,您

Android动画之Frame Animation

在Android中,动画Animation的实现有两种方式:Tween Animation(渐变动画)和Frame Animation(帧动画).渐变动画是通过对场景里的对象不断做图像变换(平移.缩放.旋转等)产生动画效果.帧动画则是通过顺序播放事先准备好的图像来产生动画效果,和电影类似. 帧动画主要是通过AnimationDrawable类来实现的. 1.AnimationDrawable类 AnimationDrawable类用于创建由一系列Drawable对象构成的逐帧动画对象,它可以作为

详解Android动画之Frame Animation(转)

在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. 如果被定义在XML文件中,我们可以放置在/res下的anim或drawable目录中(/res/[anim | drawable]/filename.xml),文件名可以作为资源ID在代码中引用:如果由完全由编码实现,我们需要使用到AnimationDrawable对象. 如果是将动画定义在XML

Android学习笔记-tween动画

Android动画分为Tween动画和Frame动画,近期学习了,体tween动画,现在讲学习的心得以及相关知识介绍如下. Tween又称为补间动画,可以把对象进行缩小.放大.旋转和渐变等操作.    第一: Tween动画四个主要实现类: 1.AlphaAnimation:渐变(颜色)动画,主要控制透明度变化动画类,常使用AlphaAnimation(float fromAlpha, float toAlpha)来构造: fromAlpha:动画开始时的透明度(取值范围为0.0到1.0): t

Android应用资源---动画资源(Animation Resources)

有两种类型的动画资源: 属性动画 在设定的时间内,通过修改与Animator类相关的对象的属性值来创建一个动画. 视图动画 有两种类型的视图动画框架 补间动画(Tween animation):通过执行通过执行一系列的与Animation类相关的单一图片的转换来创建动画. 帧动画(Frame animation):通过显示与AnimationDrawable类的顺序相关的图片序列来创建动画. 属性动画 动画被定义在要修改的目标对象属性的XML中,如设定时间内的背景色或alpha值. 文件位置(F