现在就来讲讲Animation里这四个标签的属性。

一、这四个标签alpha、scale、translate、rotate共有的属性为:

  • android:duration        动画持续时间,以毫秒为单位
  • android:fillAfter          如果设置为true,控件动画结束时,将保持动画最后时的状态
  • android:fillBefore       如果设置为true,控件动画结束时,还原到开始动画前的状态
  • android:fillEnabled    与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
  • android:repeatCount 重复次数
  • android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。
  • android:interpolator  设定插值器,其实就是指定的动作效果,比如弹跳效果等。

现在来分别单独讲这四个标签:【注】我们先说下android下的x与y坐标的划分规则,一个控件不管是什么控件还是布局什么的,它的原点坐标都是该控件的左上角为原点,然后,x轴:左边为负坐标右边为正坐标,y轴:下面为正上面为负。



二、scale标签——调节尺寸

1、自有属性

scale标签是缩放动画,可以实现动态调控件尺寸的效果,有下面几个属性:

  • android:fromXScale    起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍;
  • android:toXScale        结尾的X方向上相对自身的缩放比例,浮点值;
  • android:fromYScale    起始的Y方向上相对自身的缩放比例,浮点值,
  • android:toYScale        结尾的Y方向上相对自身的缩放比例,浮点值;
  • android:pivotX            缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标。(具体意义,后面会举例演示)
  • android:pivotY           缩放起点Y轴坐标,取值及意义跟android:pivotX一样。

下面看一个实例,当scale里的属性这样设置时,效果会怎样呢:

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50"
  8. android:pivotY="50"
  9. android:duration="700" />

(1)、pivotX取值数值时(50)

这个控件,宽度和高度都是从0放大到1.4倍,起始点坐标在控件左上角(坐标原点),向x轴正方向和y轴正方向都加上50像素;

根据pivotX,pivotY的意义,控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴和Y轴各加上50px,做为起始点,如下图中图二所示

图一                                                             图二

    

(2)、pivotX取值百分数时(50%)

下面再看看当pivotX、pivotY取百分数的时候,起始点又在哪里?

上面我们讲了,pivotX的值,当取50%时,表示在原点坐标的基础上加上的自己宽度的50%,看看效果:

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50%"
  8. android:pivotY="50%"
  9. android:duration="700" />

缩放位置大小仍然从0-1.4,只改变pivotX和pivotY;起始点位置如下图中图二所示:

图一                                                                 图二

   

(3)、pivotX取值50%p时

前面说过,当取值在百分数后面加上一个字母p,就表示,取值的基数是父控件,即在原点的基础上增加的值是父标签的百分值。

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50%p"
  8. android:pivotY="50%p"
  9. android:duration="700" />

效果图,及起始点坐标图如下所示:

        

对于android:duration,就不再讲解了,就是动画的持续时长,以毫秒为单位,下面看看android:fillAfter和android:fillBefore

(1)android:fillAfter:保持动画结束的状态

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50%"
  8. android:pivotY="50%"
  9. android:duration="700"
  10. android:fillAfter="true"
  11. />

(2)android:fillBefore  还原初始化状态

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50%"
  8. android:pivotY="50%"
  9. android:duration="700"
  10. android:fillBefore="true"
  11. />

android:fillBefore="true"                                 android:fillEnable="true"

   

上面顺便列出了,当仅设定fillEanble为true时的效果,这两个的标签的效果完全相同。

(3)、android:repeatMode="restart /reverse"  设定回放类型

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <scale xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXScale="0.0"
  4. android:toXScale="1.4"
  5. android:fromYScale="0.0"
  6. android:toYScale="1.4"
  7. android:pivotX="50%"
  8. android:pivotY="50%"
  9. android:duration="700"
  10. android:fillBefore="true"
  11. android:repeatCount="1"
  12. android:repeatMode="restart"
  13. />

androidRepeatMode设为restart                       androidRepeatMode设为reverse

 
     

三、alpha标签——调节透明度

1、自身属性

  • android:fromAlpha   动画开始的透明度,从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
  • android:toAlpha       动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明

使用示例:

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <alpha xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromAlpha="1.0"
  4. android:toAlpha="0.1"
  5. android:duration="3000"
  6. android:fillBefore="true">
  7. </alpha>

四、rotate标签——旋转

1、自身属性

  • android:fromDegrees     开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
  • android:toDegrees         结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
  • android:pivotX               缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲
  • android:pivotY               缩放起点Y轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p
[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rotate xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromDegrees="0"
  4. android:toDegrees="-650"
  5. android:pivotX="50%"
  6. android:pivotY="50%"
  7. android:duration="3000"
  8. android:fillAfter="true">
  9. </rotate>

围绕自身从0度逆时针旋转650度                            围绕自身从0度顺时针旋转650度

android:fromDegrees="0"                                       android:fromDegrees="0"

android:toDegrees="-650"                                      android:toDegrees="650"

     

五、translate标签 —— 平移

1、自身属性

  • android:fromXDelta     起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲
  • android:fromYDelta    起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;
  • android:toXDelta         结束点X轴坐标
  • android:toYDelta        结束点Y轴坐标
[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <translate xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:fromXDelta="0"
  4. android:toXDelta="-80"
  5. android:fromYDelta="0"
  6. android:toYDelta="-80"
  7. android:duration="2000"
  8. android:fillBefore="true">
  9. </translate>

六、set标签——定义动作合集

前面我们讲解了各个标签动画的意义及用法,但他们都是独立对控件起作用,假设我现在想上面的textView控件做一个动画——从小到大,旋转出场,而且透明度也要从0变成1,即下面的这个效果,该怎么办?

这就需要对指定的控件定义动作合集,Set标签就可以将几个不同的动作定义成一个组;

这个效果,所对应的XML代码为:

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:duration="3000"
  4. android:fillAfter="true">
  5. <alpha
  6. android:fromAlpha="0.0"
  7. android:toAlpha="1.0"/>
  8. <scale
  9. android:fromXScale="0.0"
  10. android:toXScale="1.4"
  11. android:fromYScale="0.0"
  12. android:toYScale="1.4"
  13. android:pivotX="50%"
  14. android:pivotY="50%"/>
  15. <rotate
  16. android:fromDegrees="0"
  17. android:toDegrees="720"
  18. android:pivotX="50%"
  19. android:pivotY="50%"/>
  20. </set>

好了,各个标签的属性也都介绍完了,是不是比较简单啊!!!

禁止转载--------

Android之Animation动画各属性的参数意思(二)的更多相关文章

  1. Android Property Animation动画

    3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三 ...

  2. Android之Animation动画的使用(一)

    我们在使用一些控件时候,难免会设置一些进入和退出的动画效果,比如popupwindow.listview的item动画.按钮.图片等等,要使这些控件有动画效果,当然需要用到Animation了. 下面 ...

  3. android中Animation动画的连续播放与播放完毕后停留在最后的状态

    我们做安卓应用的苦逼程序员们常常会需要用到Animation也就是动画.比如做地图功能的时候.我们在手机旋转时需要根据手机重力感应来调整地图的角度,让它上面的“北”一直指向地球的北面...好多人做动画 ...

  4. 超级强大的SVG SMIL animation动画详解

    本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordpress/?p=4333 //zxx: 本文的SVG在有 ...

  5. [转]超级强大的SVG SMIL animation动画详解

    超级强大的SVG SMIL animation动画详解 本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordp ...

  6. 自定义动画css属性

    自定义动画: 1.animation-name(自定义动画名称) 元素所应用的动画名称,必须与@keyframes使用,名称由@keyframes定义. keyframes(动画关键帧):以@keyf ...

  7. css动画效果之transition(动画效果属性)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

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

  9. Android动画基础——属性动画(Property Animation)

    本篇涉及例子下载:Github 本篇讲android 3.0引入的属性动画框架,上篇写视图动画View Animation时就说过ViewAnimation的缺点,那就是动画作用的是view本身的视觉 ...

随机推荐

  1. Centos常用命令之:文件操作

    在centos中,常用的文件操作命令有: ◇touch:建置新文件或者修改文件时间◇cat:从第一行开始显示文件内容◇tac:从最后一行开始显示文件内容,和cat相反◇nl:显示的时候,顺道输出行号◇ ...

  2. [JSOI2008]球形空间产生器

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...

  3. [Codeforces]852I - Dating

    题目大意:给定一棵n个点的树,每个点上有一个汉子或妹子,每人有一个权值,每次询问一条链上选出一对权值相等的男女有多少种选法.(n,q<=10^5) 做法:比较显然的树上莫队,熟悉序列莫队那套理论 ...

  4. React 关于组件(界面)更新

    在最近在学 React , 将组件的UI更新稍微整理了一下.根据业务要求,可能会出现如下的技术实现要求:1.更新自己2.更新子组件3.更新兄弟组件4.更新父组件5.父 call 子  function ...

  5. WMI远程启动软件(某个应用程序)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M ...

  6. Lucene——Field.Store(存储域选项)及Field.Index(索引选项)

    Field.Store.YES或者NO(存储域选项) 设置为YES表示或把这个域中的内容完全存储到文件中,方便进行文本的还原 设置为NO表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完 ...

  7. 异常处理&RandomAccessFile&节奏感

    异常处理 异常处理方面的知识,下面是学习中记的笔记: try尝试捕获异常 catch对捕获的异常进行处理 多个catch要注意的问题: 一.顺序问题,先小后大,也就是先子类后父类.因为当异常出现的时候 ...

  8. Oracle中的列转行例子详解

    数据如下:name id张三 1,2,3 要求实现:name id张三 1张三 2张三 3 --创建临时表 create table tmp as(select '张三' name, '1,2,3' ...

  9. jspacker压缩及解压缩研究(js eval)

    起因: 在研究爬虫的时候发现很多网站都出现了同一种方式的js混淆,并且名字都是pde.js,怀疑是使用了同一款混淆工具,所以研究一下. 这款工具叫JS Packer,并不是专门的混淆工具,而是一款js ...

  10. 状态模式、职责链模式——省去if-else的繁琐结构

    小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥 ...