Android Animation 动画Demo

本文主要介绍Android中的Animation动画。

Android提供了2中动画:Tween动画和Frame动画。

本文中主要讲解Tween动画,下篇文章中会讲到Frame动画。

Tween动画:

通过对View的内容进行一系列的图形变换(包括平移,缩放,旋转,改变透明度)来实现动画的效果,动画效果的定义可以采用XML方式也可以采用编码来做Tween动画(文章最后会给出两种方式动画的源代码Demo)。


动画的类型


Xml定义动画使用的配置节点


编码定义动画使用的类


渐变透明度动画效果(简称透明动画)


<alpha/>


AlphaAnimation


渐变尺寸缩放动画效果(缩放动画)


<scale/>


ScaleAnimation


画面位置移动动画效果(移位动画)


<translate/>


TranslateAnimation


画面旋转动画效果(旋转动画)


<rotate/>


RotateAnimation

实现效果图:

源代码:

:

布局文件activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:text="使用XML文件来实现动画"
        android:textColor="@android:color/holo_orange_dark"
        android:textSize="20dp" />
    <!-- 运用各个Button,实现其动画效果 -->

    <Button
        android:id="@+id/button_alphaAnim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="透明动画AlphaAnimation" />

    <Button
        android:id="@+id/button_rotateAnim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="旋转动画RotateAnimation" />

    <Button
        android:id="@+id/button_translateAnim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="移位动画TranslateAnimation" />

    <Button
        android:id="@+id/button_scaleAnim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="缩放动画ScaleAnimation" />

    <Button
        android:id="@+id/button_setAnim1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="透明动画+移位动画" />

    <Button
        android:id="@+id/button_setAnim2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="旋转动画+缩放动画" />

</LinearLayout>

anim文件夹下的动画布局:

相应的动画属性并没有详细标示,读者可自行研究,争取达到随心所欲修改动画效果的目的。

透明动画aa.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- 透明动画xml文件 -->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="0"
    android:toAlpha="1" >

</alpha>

旋转动画ra.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 旋转动画xml文件 -->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" >

</rotate>

缩放动画sa.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 缩放动画xml文件 -->
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromXScale="0"
    android:fromYScale="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1"
    android:toYScale="1" >

</scale>

移位动画ta.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 移位动画xml文件 -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%"
    android:fromYDelta="100%"
    android:toXDelta="0%"
    android:toYDelta="0%"
    android:duration="2000">

</translate>

透明动画+移位动画的xml文件,set1.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 透明动画+移位动画的xml文件 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:shareInterpolator="true" >

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1" />

    <translate
        android:fromXDelta="100%"
        android:fromYDelta="100%"
        android:toXDelta="0%"
        android:toYDelta="0%" />

</set>

旋转动画+缩放动画的xml文件,set2.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- 旋转动画+缩放动画的xml文件 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:shareInterpolator="true" >

    <rotate
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360" />

    <scale
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" />

</set>

MainActivity代码:

package com.myanimationdemo2;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import com.myanimationdemo2.R.anim;

public class MainActivity extends Activity implements OnClickListener {
	private Button button_alphaAnim, button_rotateAnim, button_translateAnim,
			button_scaleAnim, button_setAnim1, button_setAnim2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		button_alphaAnim = (Button) findViewById(R.id.button_alphaAnim);
		button_rotateAnim = (Button) findViewById(R.id.button_rotateAnim);
		button_translateAnim = (Button) findViewById(R.id.button_translateAnim);
		button_scaleAnim = (Button) findViewById(R.id.button_scaleAnim);
		button_setAnim1 = (Button) findViewById(R.id.button_setAnim1);
		button_setAnim2 = (Button) findViewById(R.id.button_setAnim2);

		button_alphaAnim.setOnClickListener(this);
		button_rotateAnim.setOnClickListener(this);
		button_translateAnim.setOnClickListener(this);
		button_scaleAnim.setOnClickListener(this);
		button_setAnim1.setOnClickListener(this);
		button_setAnim2.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		/**
		 * 透明动画
		 */
		case R.id.button_alphaAnim:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.aa));
			break;
		/**
		 * 旋转动画
		 */
		case R.id.button_rotateAnim:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.ra));
			break;
		/**
		 * 移位动画
		 */
		case R.id.button_translateAnim:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.ta));
			break;
		/**
		 * 缩放动画
		 */
		case R.id.button_scaleAnim:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.sa));
			break;
		/**
		 * 透明动画+移位动画
		 */
		case R.id.button_setAnim1:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.set1));
			break;
		/**
		 * 旋转动画+缩放动画
		 */
		case R.id.button_setAnim2:
			v.startAnimation(AnimationUtils.loadAnimation(
					getApplicationContext(), anim.set2));
			break;

		default:
			break;
		}
	}

}

以上为Tween动画中,以xml形式给出的动画Demo代码,对直接在代码中实现动画Demo并没有做详细介绍。

下面给出两者的源代码Demo:

以xml形式的动画Demo源代码:

点击下载源码

直接在代码中编写的Demo源代码:

点击下载源码

Android Animation 动画Demo

时间: 2024-11-07 15:06:00

Android Animation 动画Demo的相关文章

Android Animation 动画Demo(Frame逐帧动画)

上一篇介绍了Animation动画其一:Tween补间动画. 这篇文章接下来介绍Animation另一种动画形式:Frame逐帧动画. Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现(后面会给出这两种实现方式的源代码Demo). 下面分别介绍: 一.定义在xml中实现: 实现效果图: 源代码: 布局文件:main.xml: <?xml version="1.0" encodin

Android Animation动画(很详细)

http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml Android Animation动画(很详细),布布扣,bubuko.com

Android Animation动画详解(二): 组合动画特效

前言 上一篇博客Android Animation动画详解(一): 补间动画 我已经为大家介绍了Android补间动画的四种形式,相信读过该博客的兄弟们一起都了解了.如果你还不了解,那点链接过去研读一番,然后再过来跟着我一起学习如何把简单的动画效果组合在一起,做出比较酷炫的动画特效吧. 一. 动画的续播 如题,大家想想,如果一个页面上包含了许多动画,这些动画要求按顺序播放,即一个动画播放完成后,继续播放另一个动画,使得这些动画具有连贯性.那该如何实现呢? 有开发经验或者是逻辑思维的人肯定会想,对

Android Animation 动画

动画类型 Android的animation由四种类型组成  Android动画模式 Animation主要有两种动画模式:一种是tweened animation(渐变动画) XML中 JavaCode alpha AlphaAnimation scale ScaleAnimation 一种是frame by frame(画面转换动画) XML中 JavaCode translate TranslateAnimation rotate RotateAnimation 如何在XML文件中定义动画

Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画

前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android Animation动画详解(二): 组合动画特效 . 已经熟悉了基础动画的实现后,便可以试着去实现常见APP中出现过的那些精美的动画.今天我主要给大家引入一个APP的ListView的动画效果: 当展示ListView时,Listview的每一个列表项都按照规定的动画显示出来. 说起来比较抽象,先给大家

Android Animation 动画属性

在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现: 一种是 tweened animation 渐变动画,另一种是 frame by frame animation 补间(画面转换)动画. tweened animation 渐变动画有以下两种类型: 1.alpha   渐变透明度动画效果 2.scale   渐变尺寸伸缩动画效果 frame by frame animation 画面转换动画有以下两种类型: 1.translate  画面转换位置移动动画效果

Android Animation动画的xml使用

在Android应用程序,使用动画效果,能带给用户更好的感觉,做动画可以通过XML或Android代码来实现. Animation动画效果的实现可以通过两种方式进行实现,一种是tweened animation (渐变动画),另一种是frame by frame animation (画面转换动画). tweened animation渐变动画有以下两种类型: 1.alpha     渐变透明度动画效果 2.scale    渐变尺寸伸缩动画效果 frame by frame animation

Android Animation (动画设计)

Android Animation(动画设计) 本文主要介绍逐帧动画,补间动画,属性动画 使用简单的图片 1.Bitmap和BitmapFactory 把一个Bitmap包装成BitmapDrawable对象,调用BitmapDrawable的构造器 BitmapDrawable drawable = new BitmapDrawable(bitmap); 获取BitmapDrawable所包装的Bitmap, Bitmap bitmap = drawable.getBitmap(); 2.Bi

android animation动画效果的两种实现方式

animation动画效果两种实现方式 注:此例为AlphaAnimation效果,至于其他效果,换一下对象即可. 1..java文件 代码控制 添加并且开始animation动画 //添加动画效果 AlphaAnimation animation = new AlphaAnimation(0.3f, 1.0f); //设置次效果的持续时间 animation.setDuration(2000); //设置动画的监听事件 animation.setAnimationListener(new An