以下博文讲解比较详细,可查阅:

http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml

几个关键属性:

setRepeatCount(int repeatCount);//设置动画重复执行的次数
setStartOffSet(long startOffSet);//设置动画执行之前的等待时间。
setFillBefore(Boolean fillBefore);//为true则动画执行完成后,回到最初的状态。
setFillAfter(Boolean fillAfter);//为true 动画保持完成状态。
setDuration(long duration);//动画持续时间

以下为自己封装的动画工具类,只是最简单的封装。

package com.create.utilslibrary;

import android.content.Context;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation; /**
* Created by Administrator on 2016/5/19 0019.
*/
public class AnimatorUtils {
/**
* 条目动画
*
* @param context
* @param view
* @param position
*/
public static void runEnterAnimation(Context context, View view, int position) {
view.setTranslationY(ScreenUtil.getScreenHight(context));
view.animate()
.translationY(0)
.setStartDelay(100 * (position % 15))
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.start();
} /**
* 渐变动画,淡入淡出 动画完成后保持在结束位置
*
* @param fromAlpha 开始的渐变值 0f 表开始时是全透明 1f表开始时是完全显示 值为 0--1f之间
* @param toAlpha 结束的渐变值 0f 表结束时是全透明 1f表结束时是完全显示 值为 0--1f之间
* @param duration 动画持续时间 毫秒
* @return
*/
public static AlphaAnimation getAlpaAnimation(float fromAlpha, float toAlpha, long duration) {
AlphaAnimation alphaAnimation = new AlphaAnimation(fromAlpha, fromAlpha);
alphaAnimation.setDuration(duration);
return alphaAnimation;
} /**
* 平移动画 动画完成后保持在结束位置
* 参考对象是view本身:Animation.RELATIVE_TO_SELF
*
* @param fromXvelue x轴方向 开始的值,相对于view宽度(x轴坐标) 的百分比 0f表示从view的最左侧的坐标点开始动画,1f表示从最右侧开始 值为 0f--1f之间
* @param toXvelue x轴方向 结束的值,相对于view宽度 的百分比 0f表示到view的最左侧坐标点时结束,1f表示到最右侧坐标点结束 值为 0f--1f之间
* @param fromYValue y轴方向 开始的值,相对于view高度(y轴坐标) 的百分比 0f表示从view的最顶部的坐标点开始动画,1f表示从最底部的坐标点开始 值为 0f--1f之间
* @param toYValue y轴方向 结束的值,相对于view高度 的百分比 0f表示到view的最顶部的坐标点时结束,1f表示到底部的坐标点结束 值为 0f--1f之间
* @param duration 动画持续时间
* @return
*/
public static TranslateAnimation getTranslateAnimation(float fromXvelue,
float toXvelue,
float fromYValue,
float toYValue,
long duration
) {
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, fromXvelue, Animation.RELATIVE_TO_SELF, toXvelue,
Animation.RELATIVE_TO_SELF, fromYValue, Animation.RELATIVE_TO_SELF, toYValue
);
translateAnimation.setDuration(duration);
return translateAnimation;
} /**
* 缩放动画 动画完成后保持在结束位置
* @param fromX 开始的x轴大小 相对于自身宽度的比例 0f--1f之间
* @param toX 结束的x轴的大小 相对于自身宽度的比例 0f--1f之间
* @param fromY 开始的y轴大小 相对于自身高度的比例 0f--1f之间
* @param toY 结束的y轴大小 相对于自身高度的比例 0f--1f之间
*
* 以下四个值是确定缩放开始的坐标点。
* @param pivotXType Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
* @param pivotXValue 0f--1f之间的值
* @param pivotYType 同上
* @param pivotYValue 同上
* @return
*/
public static ScaleAnimation getScaleAnimation(float fromX,
float toX,
float fromY,
float toY,
int pivotXType,
float pivotXValue,
int pivotYType,
float pivotYValue,
long duration
){
ScaleAnimation scaleAnimation = new ScaleAnimation(fromX, toX, fromY, toY,
pivotXType, pivotXValue, pivotYType, pivotYValue);
scaleAnimation.setDuration(duration);
scaleAnimation.setFillAfter(true);
return scaleAnimation;
} /**
* 旋转动画 保持在结束位置
* @param fromDegrees 开始角度
* @param toDegrees 结束角度
* 以下四个参数用户旋转的圆心
* @param pivotXType 确定x轴坐标参照类型 Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
* @param pivotXValue x轴 的坐标值 0f--1f
* @param pivotYType 确定y轴的坐标参照类型 Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
* @param pivotYValue y轴 的坐标值 0f--1f
* @return
*/
public static RotateAnimation getRotateAnimation(float fromDegrees,
float toDegrees,
int pivotXType,
float pivotXValue,
int pivotYType,
float pivotYValue,
long duration
){
RotateAnimation rotateAnimation=new RotateAnimation(fromDegrees,toDegrees,
pivotXType,pivotXValue,pivotYType,pivotYValue);
rotateAnimation.setDuration(duration);
rotateAnimation.setFillAfter(true);
return rotateAnimation;
}
/**
* 创建动画集合对象
* @param bool true 所有集合中的动画使用 集合的插值器, false表各个动画使用自己的插值器。
* @return
*/
public static AnimationSet getAnimationSet(Boolean bool) {
AnimationSet animationSet = new AnimationSet(false);
return animationSet;
}
}

android 动画总结的更多相关文章

  1. Android动画效果之自定义ViewGroup添加布局动画

    前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...

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

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

  3. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  4. Android动画效果之Frame Animation(逐帧动画)

    前言: 上一篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画),今天来总结下Android的另外一种动画Frame ...

  5. Android动画效果之Tween Animation(补间动画)

    前言: 最近公司项目下个版本迭代里面设计了很多动画效果,在以往的项目中开发中也会经常用到动画,所以在公司下个版本迭代开始之前,抽空总结一下Android动画.今天主要总结Tween Animation ...

  6. Android动画

    [浅谈Android动画] 总共四种:Tween Animation变换动画.Frame Animation帧动画 Layout Animation布局动画.Property Animation 属性 ...

  7. Android动画学习(二)——Tween Animation

    前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...

  8. Android动画学习(一)——Android动画系统框架简介

    2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...

  9. Android动画的理解

    基础知识 在我们开始讲Android动画这个知识点之前,我们了解下相应的基础知识点. Shape篇 一般用Shape定义的XML文件是存放在Drawable目录下,广泛应用于在Button.TextV ...

  10. Android动画之淡入淡出

    为了更好的说明Android动画的淡入淡出效果,这里以一个场景为例: 界面上有两个View 控件,两个View交替显示,当一个View淡入显示,另一个View淡出不可见. 我们把当前要显示的View叫 ...

随机推荐

  1. FTP规范

    FTP协议命令+返回值+返回值解析 FTP message format:FTP commands are Telnet strings terminated by the Telnet end of ...

  2. 为benchmarksql的PostgreSQL java驱动进行升级

    为benchmarksql的PostgreSQL java驱动进行升级[root@minion1 benchmarksql-4.1.0]# wget https://jdbc.postgresql.o ...

  3. MySQL单表最大限制

    想把一个项目的数据库导出来,然后倒入到自己熟悉的MySQL数据库中进行运行和调试.导出来后,发现sql文件整整有12G多大,忽然想起来,MySQL好像有个叫做容量限制的神奇特性,但是忘了上限是多少了, ...

  4. 强连通(hdu4635)最多增加几条单向边后满足最终的图形不是强连通

    Strongly connected Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. csuoj 1334: 好老师

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1334 1334: 好老师 Time Limit: 1 Sec  Memory Limit: 128 ...

  6. Ruby操作VBA的注意事项和技巧(2):宏里调用和控制窗体以及窗体上的控件、不同workbook之间的宏互相调用

    4.宏里调用并控制窗体以及窗体上的各种控件 1 Sub Criterion_Check() 2 If Workbooks.count = 0 Then '如果当前没有打开的工作薄的话需要发出警告 3 ...

  7. 单片机项目开发中的Muliple Inialliaztion和Mutilple Definition解决:在.c中定义全局变量或者用extern加以声明

    c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下.      对于比较小的程序,一般只有一个c文件和一个头文件 ...

  8. 自定义view(使用EditTetx实现记事本特效)

    先看一下效果图: 思路: 创建一个类,继承自EditText,在onDraw方法中绘制我们的下划线,通过屏幕的高度和每行控件的高度的比值得出屏幕中应该绘制多少行下划线,再来实现一些自定义的属性,设置控 ...

  9. unable to connect to the virtual device Genymotion 神器启动问题

    截图: 解决方法:win7以上用户在桌面找到:网络--右键(属性)--更改适配器设置--VirtualBox Host-Only Network--属性--双击:Internet 协议版本4(TCP/ ...

  10. -Xloggc:log/gc.log 指定GC log的位置

    -Xloggc:log/gc.log指定GC log的位置,以文件输出帮助开发人员分析问题