Android之Animation动画各属性的参数意思(二)

时间:2023-03-10 01:18:21
Android之Animation动画各属性的参数意思(二)

现在就来讲讲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轴:下面为正上面为负。

Android之Animation动画各属性的参数意思(二)

二、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
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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,做为起始点,如下图中图二所示

图一                                                             图二

Android之Animation动画各属性的参数意思(二)    Android之Animation动画各属性的参数意思(二)

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

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

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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;起始点位置如下图中图二所示:

图一                                                                 图二

Android之Animation动画各属性的参数意思(二)   Android之Animation动画各属性的参数意思(二)

(3)、pivotX取值50%p时

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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之Animation动画各属性的参数意思(二)        Android之Animation动画各属性的参数意思(二)

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

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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. />

Android之Animation动画各属性的参数意思(二)

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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"

Android之Animation动画各属性的参数意思(二)   Android之Animation动画各属性的参数意思(二)

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

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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

Android之Animation动画各属性的参数意思(二) 
     Android之Animation动画各属性的参数意思(二)

三、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
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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>

Android之Animation动画各属性的参数意思(二)

四、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
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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"

Android之Animation动画各属性的参数意思(二)     Android之Animation动画各属性的参数意思(二)

五、translate标签 —— 平移

1、自身属性

  • android:fromXDelta     起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲
  • android:fromYDelta    起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;
  • android:toXDelta         结束点X轴坐标
  • android:toYDelta        结束点Y轴坐标
[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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>

Android之Animation动画各属性的参数意思(二)

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

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

Android之Animation动画各属性的参数意思(二)

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

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

[html] view
plain
copyAndroid之Animation动画各属性的参数意思(二)Android之Animation动画各属性的参数意思(二)
  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>

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

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