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

实现旋转、平移、缩放和透明度渐变的补间动画,具体实现如下:

1.在新建项目的res目录中,创建一个名为anim的目录,并在该目录中创建实现旋转、平移、缩放和透明度渐变的动画资源文件。

透明度渐变的动画资源文件anim_alpha.xml(完全不透明->完全透明->完全不透明)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="1"
        android:toAlpha="0"
        android:fillAfter="true"
        android:repeatMode="reverse"
        android:repeatCount="1"
        android:duration="2000"/>
</set>

旋转的动画资源文件anim_rotate.xml(0度->720度->360度->0度)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromDegrees="0"
        android:toDegrees="720"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000"/>
    <rotate
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="2000"
        android:fromDegrees="360"
        android:toDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="2000"/>
</set>

缩放动画资源文件anim_scale.xml(放大2倍->收缩回来)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="1"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromYScale="1"
        android:toXScale="2.0"
        android:toYScale="2.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:duration="2000"/>

</set>

平移动画资源文件anim_translate.xml(屏幕左侧->屏幕右侧->屏幕左侧)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0"
        android:toXDelta="860"
        android:fromYDelta="0"
        android:toYDelta="0"
        android:fillAfter="true"
        android:repeatMode="reverse"
        android:repeatCount="1"
        android:duration="2000"/>
</set>

主界面资源文件:
res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout1"
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:id="@+id/linearLayout2"
   		 android:orientation="horizontal">
		<Button android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:id="@+id/button1"
		    android:text="旋转"/>
		<Button android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:id="@+id/button2"
		    android:text="平移"/>
		<Button android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:id="@+id/button3"
		    android:text="缩放"/>
		<Button android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:id="@+id/button4"
		    android:text="透明度变化"/>
	</LinearLayout>
	<ImageView android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/imageView1"
	    android:src="@drawable/img1"/>
</LinearLayout>

效果如图

MainActivity:
在onCreat()方法中,首先获取动画资源文件中创建的动画资源,然后获取要应用动画效果的ImageView,再获取“旋转”按钮,并为该按钮添加单击事件监听器,在重写onClik()方法中,播放动画。具体代码如下:

package com.example.test;  

import android.app.Activity;
import android.os.Bundle;
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 MainActivity extends Activity {  

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        final Animation rotate=AnimationUtils.loadAnimation(this, R.anim.anim_rotate);//获取旋转动画资源
        final Animation translate=AnimationUtils.loadAnimation(this, R.anim.anim_translate);//获取平移动画资源
        final Animation scale=AnimationUtils.loadAnimation(this, R.anim.anim_scale);//获取缩放动画资源
        final Animation alpha=AnimationUtils.loadAnimation(this, R.anim.anim_alpha);//获取透明度变化动画资源
        //获取要应用动画效果的ImageView
        final ImageView iv=(ImageView)findViewById(R.id.imageView1);
        Button button1=(Button)findViewById(R.id.button1);//获取"旋转"按钮
        button1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				//播放旋转动画
				iv.startAnimation(rotate);

			}
		});

        Button button2=(Button)findViewById(R.id.button2);//获取"平移"按钮
        button2.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				//播放平移动画
				iv.startAnimation(translate);

			}
		});

        Button button3=(Button)findViewById(R.id.button3);//获取"缩放"按钮
        button3.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				//播放缩放动画
				iv.startAnimation(scale);

			}
		});

        Button button4=(Button)findViewById(R.id.button4);//获取"透明度渐变"按钮
        button4.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				//播放透明度渐变动画
				iv.startAnimation(alpha);

			}
		});

	}

}

效果如图1、图2、图3、图4:

转载请注明出处:http://blog.csdn.net/acmman/article/details/45849613

时间: 2024-11-10 01:05:02

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

21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,帧动画,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画

 1 关于常见的对话框,主要有: 常见的对话框,单选对话框,多选对话框,进度条对话框(转圈类型的),带进度条的对话框. 案例结构: 完成如下结构的案例,将所有的案例都测试一下: 2 编写MainActivity,代码如下: package com.itheima.dialog;   import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import and

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

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

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动画之补间动画(Tween Animation)基础学习

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

Android补间动画效果

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

Android动画之补间动画(Tween Animation)实例详解_Android

本文实例讲述了Android动画之补间动画.分享给大家供大家参考,具体如下: 前面讲了<Android动画之逐帧动画(Frame Animation)>,今天就来详细讲解一下Tween动画的使用. 同样,在开始实例演示之前,先引用官方文档中的一段话: Tween动画是操作某个控件让其展现出旋转.渐变.移动.缩放的这么一种转换过程,我们称为补间动画.我们可以以XML形式定义动画,也可以编码实现. 如果以XML形式定义一个动画,我们按照动画的定义语法完成XML,并放置于/res/anim目录下,文

Android动画之补间动画(Tween Animation)实例详解

本文实例讲述了Android动画之补间动画.分享给大家供大家参考,具体如下: 前面讲了<Android动画之逐帧动画(Frame Animation)>,今天就来详细讲解一下Tween动画的使用. 同样,在开始实例演示之前,先引用官方文档中的一段话: Tween动画是操作某个控件让其展现出旋转.渐变.移动.缩放的这么一种转换过程,我们称为补间动画.我们可以以XML形式定义动画,也可以编码实现. 如果以XML形式定义一个动画,我们按照动画的定义语法完成XML,并放置于/res/anim目录下,文