View Animation定义了下面的四种动画效果:

缩放(scale)、位移(translation)、旋转(rotation)、透明(alpha)

 

缩放动画:

ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)

看ScaleAnimation的构造函数,各个参数的含义都很清楚

fromX: 理解为对象缩放前的宽度

toX:对象x需要缩放到多大

其他的两个带Y的参数以此类推

 

位移动画:

TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

fromXDelte:对象执行动画之前的X坐标

toXDelte:移动目标,对象停止时所处的x坐标

 

旋转动画:

RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)

fromDegrees:旋转前的角度

toDegrees:对象应该旋转到多少度

最后的两个参数是控制旋转中心

 

透明动画:

AlphaAnimation(float fromAlpha, float toAlpha)

两个参数的值都只能够在0和1之间,0是全透明,1和不透明

 

实例代码:

package com.whathecode.viewanimation;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.view.animation.CycleInterpolator;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView; public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void onclickMove(View view) {
ImageView img = (ImageView) findViewById(R.id.image); TranslateAnimation ta = new TranslateAnimation(0, 10, 0, 0);
ta.setInterpolator(new CycleInterpolator(7f));
ta.setDuration(1000);
img.startAnimation(ta);
} public void onclickScale(View view) {
ImageView img = (ImageView) findViewById(R.id.image); /**
* 设置缩放中心的值
*/
int pivotX = img.getWidth() / 2;
int pivotY = img.getHeight() / 2; //初始化缩放对象
ScaleAnimation sa = new ScaleAnimation(1f, 0.5f, 1f, 0.5f, pivotX,
pivotY);
//设置插值器,用于控制动画的行为,这里是控制动画的重复次数3
sa.setInterpolator(new CycleInterpolator(3f));
//动画的速率
sa.setDuration(1500);
img.startAnimation(sa);
} public void onclickRotate(View view)
{
ImageView img = (ImageView) findViewById(R.id.image); int pivotX = img.getWidth() / 2;
int pivotY = img.getHeight() / 2;
RotateAnimation ra = new RotateAnimation(0, 360f, pivotX, pivotY);
ra.setDuration(1000);
img.startAnimation(ra);
} public void onclickAlpha(View view)
{
ImageView img = (ImageView) findViewById(R.id.image); AlphaAnimation aa = new AlphaAnimation(1f, 0.5f);
aa.setDuration(1500);
img.startAnimation(aa);
} public void startAnimSet(View view)
{
ImageView img = (ImageView) findViewById(R.id.image); int pivotX = img.getWidth() / 2;
int pivotY = img.getHeight() / 2;
RotateAnimation ra = new RotateAnimation(0, 360f, pivotX, pivotY);
ra.setDuration(1000); AlphaAnimation aa = new AlphaAnimation(1f, 0.5f);
aa.setDuration(1500); //初始化一个空的动画集合
AnimationSet as = new AnimationSet(false); //向集合中添加动画
as.addAnimation(ra);
as.addAnimation(aa);
img.startAnimation(as);
}
}

效果:

 

除了在java代码中初始化动画对象之外,我们还可以在xml文件中使用动画资源

下面是xml中使用动画的语法:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@[package:]anim/interpolator_resource"
android:shareInterpolator=["true" | "false"] >
<alpha
android:fromAlpha="float"
android:toAlpha="float" />
<scale
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float" />
<translate
android:fromXDelta="float"
android:toXDelta="float"
android:fromYDelta="float"
android:toYDelta="float" />
<rotate
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float" />
<set>
...
</set>
</set>

实例代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0"
android:toXDelta="200"
android:duration="1500"/> <alpha
android:fromAlpha="1"
android:toAlpha="0.5"
android:duration="1500"
/>
</set>

加载资源的方法:

public void loadAnimRes(View view)
{
//使用loadAnimationUtils类加载动画资源
AnimationSet as = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.animset);
img.startAnimation(as);
}

效果:

动画的使用—View Animation的更多相关文章

  1. 浅谈Android样式开发之View Animation (视图动画)

    引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...

  2. Android动画View Animation

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

  3. Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  4. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)

    1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...

  5. Android动画之二:View Animation

    作为一个博客<Android其中的动画:Drawable Animation>.android动画主要分为三大部分.上一篇博客已经解说Drawable Animation的使用方法,即逐帧 ...

  6. Android动画三部曲之中的一个 View Animation &amp; LayoutAnimation

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/50612827 本篇文章对android的Tween动画和帧动画以及布局动画进行总结. ...

  7. Android 动画基础——视图动画(View Animation)

    本篇讲android 3.0之前被广泛的动画框架——ViewAnimation. 目录 我将分为六部分来讲: 概述 Alpha透明动画 Rotate旋转动画 Translate位移动画 Scale放缩 ...

  8. Android动画View Animation与Drawable Animation

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

  9. Android动画效果之Property Animation进阶(属性动画)

    前言: 前面初步认识了Android的Property Animation(属性动画)Android动画效果之初识Property Animation(属性动画)(三),并且利用属性动画简单了补间动画 ...

随机推荐

  1. 路径分析之NetworkX实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- import networkx as nx import numpy as np import json i ...

  2. cocos2dx骨骼动画Armature源码分析(二)

    flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). sk ...

  3. iOS之 block,代替代理作为回调函数

    最近在弄一个视频会议的项目,但今天要说的跟视频基本没关系,我们来说一下在一个view中创建一个button,在controller中加载这个view 当button被点击后将时间响应传递给contro ...

  4. sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]

    SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复. ...

  5. .dat 导入sqlserver2000

    所有任务->还原数据库->从设备.选项中改变路径地址

  6. Nova reboot 和 lock 操作 - 每天5分钟玩转 OpenStack(32)

    前面 CloudMan 通过日志详细分析了 nova 的 launch, shut off 和 start 操作.不知道大家现在是否已经掌握了日志分析的技能? 今天咱们就来检验一下.本节讨论的是 no ...

  7. php 三种数组

    在 PHP 中,有三种数组类型: 索引数组 - 带有数字索引的数组 关联数组 - 带有指定键的数组 多维数组 - 包含一个或多个数组的数组 获得数组的长度 - count() 函数

  8. Java中的序列化Serialable高级详解

    来自[http://blog.csdn.net/jiangwei0910410003/article/details/18989711] 引言 将 Java 对象序列化为二进制文件的 Java 序列化 ...

  9. 解密FFmpeg播放track mode控制

    上一篇文章(http://www.cnblogs.com/yangdanny/p/4421130.html)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H ...

  10. MVC架构学习之Smarty学习——病来而蔫

    前两天是五一小长假,而每次假期都想着如何如何刻苦一番,往往是自作多情.. 当然这次是有小病在身,多个借口吧. 一有病就蔫的不行...要锻炼了啊,脚估计也差不多了,游泳试试吧这周. 这次学习Smarty ...