动画的使用—View Animation
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的更多相关文章
- 浅谈Android样式开发之View Animation (视图动画)
引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...
- Android动画View Animation
Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
- Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...
- Android动画之二:View Animation
作为一个博客<Android其中的动画:Drawable Animation>.android动画主要分为三大部分.上一篇博客已经解说Drawable Animation的使用方法,即逐帧 ...
- Android动画三部曲之中的一个 View Animation & LayoutAnimation
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/50612827 本篇文章对android的Tween动画和帧动画以及布局动画进行总结. ...
- Android 动画基础——视图动画(View Animation)
本篇讲android 3.0之前被广泛的动画框架——ViewAnimation. 目录 我将分为六部分来讲: 概述 Alpha透明动画 Rotate旋转动画 Translate位移动画 Scale放缩 ...
- Android动画View Animation与Drawable Animation
Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...
- Android动画效果之Property Animation进阶(属性动画)
前言: 前面初步认识了Android的Property Animation(属性动画)Android动画效果之初识Property Animation(属性动画)(三),并且利用属性动画简单了补间动画 ...
随机推荐
- 函数模块:CTVB_COMPARE_TABLES--两个表中删除/变更/粘贴分解
这个函数模块比较两个内表,将被删除.增加和修改的内表行分别分组输出. 输入参数:TABLE_OLD:旧表TABLE_NEW:新表KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Unicod ...
- 从FineReport看开放式引擎API
对于一款软件或产品,尤其是一些企业级应用的IT软件,是不可能满足所有需求的.尤其是针对业务化的产品需求,某些个性化的需求就要进行二次开发.二次开发需要API接口,无论是什么样的开发,开发人员都需要对开 ...
- angularjs结合d3js实现资源展示
转载请注明出处: 转载自Bin's Blog: angularjs & d3 实现资源展示( http://www.wenbin.cf/post/27/ ) angularjs结合d3js实 ...
- ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
这篇文章是上篇文章”Expdp 导数错误 ORA-00832”的延续,前几天工作比较忙.累,直到今天才整理发出来.这个数据库实例的参数设置比较诡异其实是有原因的,由于这台数据库服务器系统是32位,数据 ...
- js parseInt和map函数
今天看了一个js的题目["1","2","3"].map(parseInt),看到后脑海中浮现的答案是[1,2,3],但是看到正确答案后蒙了 ...
- Cookie无法读取
问题描述:用谷歌调试可以看到,但是用js去读取的时候,一直提示undefined
- plain framework 1(简约框架)一款主要用于网络(游戏)开发的C/C++框架 即将开源发布
在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而 ...
- Oracle约束(Constraint)详解
概述 约束是数据库用来确保数据满足业务规则的手段,不过在真正的企业开发中,除了主键约束这类具有强需求的约束,像外键约束,检查约束更多时候仅仅出现在数据库设计阶段,真实环境却很少应用,更多是放到程序逻辑 ...
- 洛谷练习P2279 P1346
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...
- [No000077]打造自己的Eclipse
下载官网的Eclipse IDE for Java EE Developers 在根目录下的eclipse.ini文件中添加"-Dfile.encoding=UTF-8", 作用: ...