一、Animations介绍

Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等,这些效果可以应用在绝大多数的控件中。

二、Animations的分类

Animations从总体上可以分为两大类:

1.Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha——淡入淡出,Scale——缩放效果,Rotate——旋转,Translate——移动效果。

2.Frame-by-frame Animations:这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。

三、Animations的使用方法(代码中使用)

对象之间的关系:

使用TweenedAnimations的步骤:

1.创建一个AnimationSet对象(Animation子类);

2.增加需要创建相应的Animation对象;

3.更加项目的需求,为Animation对象设置相应的数据;

4.将Animatin对象添加到AnimationSet对象当中;

5.使用控件对象开始执行AnimationSet。

四、具体实现

1、main.xml

<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<Button

android:id="@+id/rotateButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="旋转" />

<Button

android:id="@+id/scaleButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="缩放" />

<Button

android:id="@+id/alphaButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="淡入淡出" />

<Button

android:id="@+id/translateButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="移动" />

</LinearLayout>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<ImageView

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:src="@drawable/an" />

</LinearLayout>

</LinearLayout>

2、.java文件

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

importandroid.view.animation.AnimationSet;

importandroid.view.animation.RotateAnimation;

importandroid.view.animation.ScaleAnimation;

import android.view.animation.TranslateAnimation;

importandroid.widget.Button;

importandroid.widget.ImageView;

public class Animation1Activity extends Activity {

private Button rotateButton = null;

private Button scaleButton = null;

private Button alphaButton = null;

private Button translateButton = null;

private ImageView image = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

rotateButton = (Button)findViewById(R.id.rotateButton);

scaleButton = (Button)findViewById(R.id.scaleButton);

alphaButton = (Button)findViewById(R.id.alphaButton);

translateButton = (Button)findViewById(R.id.translateButton);

image = (ImageView)findViewById(R.id.image);

rotateButton.setOnClickListener(newRotateButtonListener());

scaleButton.setOnClickListener(newScaleButtonListener());

alphaButton.setOnClickListener(newAlphaButtonListener());

translateButton.setOnClickListener(

new TranslateButtonListener());

}

class AlphaButtonListener implementsOnClickListener{

public void onClick(View v) {

//创建一个AnimationSet对象,参数为Boolean型,

           //true表示使用Animationinterpolatorfalse则是使用自己的

AnimationSet animationSet = new AnimationSet(true);

//创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明

AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);

//设置动画执行的时间

alphaAnimation.setDuration(500);

//alphaAnimation对象添加到AnimationSet当中

animationSet.addAnimation(alphaAnimation);

//使用ImageViewstartAnimation方法执行动画

image.startAnimation(animationSet);

}

}

class RotateButtonListener implementsOnClickListener{

public void onClick(View v) {

AnimationSet animationSet = new AnimationSet(true);

//参数1:从哪个旋转角度开始

           //参数2:转到什么角度

           //4个参数用于设置围绕着旋转的圆的圆心在哪里

           //参数3:确定x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标

           //参数4x轴的值,0.5f表明是以自身这个控件的一半长度为x

           //参数5:确定y轴坐标的类型

           //参数6y轴的值,0.5f表明是以自身这个控件的一半长度为x

RotateAnimation rotateAnimation = new RotateAnimation(0, 360,

Animation.RELATIVE_TO_SELF,0.5f,

Animation.RELATIVE_TO_SELF,0.5f);

rotateAnimation.setDuration(1000);

animationSet.addAnimation(rotateAnimation);

image.startAnimation(animationSet);

}

}

class ScaleButtonListener implementsOnClickListener{

public void onClick(View v) {

AnimationSet animationSet = new AnimationSet(true);

//参数1x轴的初始值

           //参数2x轴收缩后的值

           //参数3y轴的初始值

           //参数4y轴收缩后的值

           //参数5:确定x轴坐标的类型

           //参数6x轴的值,0.5f表明是以自身这个控件的一半长度为x

           //参数7:确定y轴坐标的类型

           //参数8y轴的值,0.5f表明是以自身这个控件的一半长度为x

ScaleAnimation scaleAnimation = new ScaleAnimation(

0, 0.1f,0,0.1f,

Animation.RELATIVE_TO_SELF,0.5f,

Animation.RELATIVE_TO_SELF,0.5f);

scaleAnimation.setDuration(1000);

animationSet.addAnimation(scaleAnimation);

image.startAnimation(animationSet);

}

}

class TranslateButtonListener implementsOnClickListener{

public void onClick(View v) {

AnimationSet animationSet = new AnimationSet(true);

//参数12x轴的开始位置

           //参数34y轴的开始位置

           //参数56x轴的结束位置

           //参数78x轴的结束位置

TranslateAnimation translateAnimation =

new TranslateAnimation(

Animation.RELATIVE_TO_SELF,0f,

Animation.RELATIVE_TO_SELF,0.5f,

Animation.RELATIVE_TO_SELF,0f,

Animation.RELATIVE_TO_SELF,0.5f);

translateAnimation.setDuration(1000);

animationSet.addAnimation(translateAnimation);

image.startAnimation(animationSet);

}

}

}

五、Tween Animations的通用方法

转自:链接

Android学习二_八:Animation的使用(一) (转)的更多相关文章

  1. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  2. Android进阶(二十八)上下文菜单ContextMenu使用案例

    上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...

  3. 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们有一篇很好的博文<Andro ...

  4. 【转】 Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子

    目录(?)[-] 小例子 Handler的处理 Activity的代码片段 后台线程和UI的互动 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://b ...

  5. 【转】 Pro Android学习笔记(八六):了解Package(5):使用lib

    目录(?)[-] 在项目中使用lib 源代码 了解一些机制 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowin ...

  6. 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享

    目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  7. 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目

    目录(?)[-] 什么是lib项目 小例子 Lib的实现 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  8. 【转】 Pro Android学习笔记(八十):服务(5):访问远程服务

    目录(?)[-] Client的AIDL文件 Client的代码 建立连接 请求服务 断开连接 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://bl ...

  9. Java开发学习(二十八)----拦截器(Interceptor)详细解析

    一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...

随机推荐

  1. SSRS报表参数设置

    一.日期时间类型的参数注意事项: 关于数据类型的选择:(只有数据类型设置为日期/时间格式,在查询的时候才会显示日期控件,提示信息一般改成汉字) 指定默认值:指定开始日期为前10天,

  2. c#.net Excel中的数据导入到SQL数据库中

    /// <summary>        /// 从Excel 导入学生        /// </summary>        /// <param name=&qu ...

  3. question2answer论坛框架分析及web开发思考

    2015年7月25日 17:31:42 星期六 一个专门做论坛的开源PHP框架, 有后台, 支持多语种 入口文件是框架根目录的index.php 他包含了/qa-include/qa-index.ph ...

  4. [转] Android Volley完全解析(一),初识Volley的基本用法

    版权声明:本文出自郭霖的博客,转载必须注明出处.   目录(?)[-] Volley简介 下载Volley StringRequest的用法 JsonRequest的用法   转载请注明出处:http ...

  5. 在SpringMVC中获取request对象

    1.注解法 @Autowired private  HttpServletRequest request; 2. 在web.xml中配置一个监听 <listener> <listen ...

  6. ios调用c#后台接口报文格式

    - NSString *soapMessage = - [NSString stringWithFormat: - @"<?xml version=\"1.0\" ...

  7. 9.27js拓展、bootstrap菜鸟教程

    js(点击挂上 与 点击移除) <div id="dd" style="width:200px; height:200px; background-color:#6 ...

  8. python基础——实例属性和类属性

    python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...

  9. innodb之超时参数配置

    可参考:http://www.penglixun.com/tech/database/mysql_timeout.html 下面内容摘取自上面这个链接. connection_timeout,只是设置 ...

  10. javaWeb四大域对象

    servletContext Request HttpSession pageContext 详细参考:http://www.tuicool.com/articles/NJfyMrn