天天看点

【移动开发】Android Animation 动画效果总结

1.Android的animation由四种类型组成:

XML中

alpha

渐变透明度动画效果

scale

渐变尺寸伸缩动画效果

translate

画面转换位置移动动画效果

rotate

画面转移旋转动画效果

JavaCode中

AlphaAnimation

ScaleAnimation

TranslateAnimation

RotateAnimation

2.Animation主要有两种动画模式:

   一种是tweened animation(渐变动画)

JavaCode

一种是frame by frame(画面转换动画)

3.如何在XML文件中定义动画

① 打开Eclipse,新建Android工程

② 在res目录中新建anim文件夹

③ 在anim目录中新建一个myanim.xml(注意文件名小写)

④ 加入XML的动画代码

1

2

3

4

5

6

7

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?&gt;</code>

<code>&lt;</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code><code>&gt;</code>

<code>    </code><code>&lt;alpha/&gt;</code>

<code>    </code><code>&lt;scale/&gt;</code>

<code>    </code><code>&lt;translate/&gt;</code>

<code>    </code><code>&lt;rotate/&gt;</code>

<code>&lt;/</code><code>set</code><code>&gt;</code>

4.Android动画解析--XML

&lt;alpha&gt; 透明度

8

<code>&lt;</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code> <code>&gt;</code>

<code>    </code><code>&lt;alpha</code>

<code>        </code><code>android:fromAlpha=</code><code>"0.1"</code>

<code>        </code><code>android:toAlpha=</code><code>"1.0"</code>

<code>        </code><code>android:duration=</code><code>"3000"</code>

<code>    </code><code>/&gt;</code>

注释:

fromAlpha(浮点型值) 属性为动画起始时透明度, 0.0表示完全透明

    toAlpha(浮点型值) 属性为动画结束时透明度, 1.0表示完全不透明.

    fromAlpha 和 toAlpha 的取值在0.0-1.0之间的float数据类型的数字

    duration(长整型值) 属性为动画持续时间,时间以毫秒为单位

&lt;scale&gt; 缩放

9

10

11

12

13

14

15

16

17

<code>  </code><code>&lt;scale</code>

<code>    </code><code>android:interpolator= </code><code>"@android:anim/accelerate_decelerate_interpolator"</code>

<code>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  </code> 

<code>    </code><code>android:fromXScale=</code><code>"0.0"</code>

<code>    </code><code>android:toXScale=</code><code>"1.4"</code>

<code>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           </code> 

<code>    </code><code>android:fromYScale=</code><code>"0.0"</code>

<code>    </code><code>android:toYScale=</code><code>"1.4"</code>

<code>    </code><code>android:pivotX=</code><code>"50%"</code>

<code>    </code><code>android:pivotY=</code><code>"50%"</code>

<code>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          </code> 

<code>     </code><code>android:fillAfter=</code><code>"false"</code>

<code>    </code><code>android:duration=</code><code>"700"</code> <code>/&gt;</code>

interpolator 指定一个动画的插入器在我试验过程中,使用android.res.anim中的资源时候发现有三种动画插入器:

       accelerate_decelerate_interpolator  加速-减速 动画插入器

       accelerate_interpolator             加速-动画插入器

       decelerate_interpolator             减速- 动画插入器

其他的属于特定的动画效果

   A.浮点型值:

       fromXScale 属性为动画起始时 X坐标上的伸缩尺寸

       toXScale 属性为动画结束时 X坐标上的伸缩尺寸

       fromYScale 属性为动画起始时Y坐标上的伸缩尺寸

       toYScale 属性为动画结束时Y坐标上的伸缩尺寸

   说明:

       0.0表示收缩到没有,1.0表示正常无伸缩

       值小于1.0表示收缩,值大于1.0表示放大

       pivotX 属性为动画相对于物件的X坐标的开始位置

       pivotY 属性为动画相对于物件的Y坐标的开始位置

       以上两个属性值 从0%-100%中取值

       50%为物件的X或Y方向坐标上的中点位置

   B.长整型值:

       duration 属性为动画持续时间

       说明: 时间以毫秒为单位

   C.布尔型值:

       fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用

&lt;translate&gt;  移动

<code>    </code><code>&lt;translate</code>

<code>        </code><code>android:fromXDelta=</code><code>"30"</code>

<code>        </code><code>android:toXDelta=</code><code>"-80"</code>

<code>        </code><code>android:fromYDelta=</code><code>"30"</code>

<code>        </code><code>android:toYDelta=</code><code>"300"</code>

<code>        </code><code>android:duration=</code><code>"2000"</code>

<code>        </code><code>/&gt;</code>

   整型值:

       fromXDelta 属性为动画起始时 X坐标上的位置

       toXDelta 属性为动画结束时 X坐标上的位置

       fromYDelta 属性为动画起始时 Y坐标上的位置

       toYDelta 属性为动画结束时 Y坐标上的位置

注意:

      没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物

   长整型值:

       duration 属性为动画持续时间,时间以毫秒为单位

&lt;rotate&gt;  旋转

<code>    </code><code>&lt;rotate</code>

<code> </code><code>android:interpolator=</code><code>"@android:anim/accelerate_decelerate_interpolator"</code>

<code>        </code><code>android:fromDegrees=</code><code>"0"</code>

<code>        </code><code>android:toDegrees=</code><code>"+350"</code>

<code>        </code><code>android:pivotX=</code><code>"50%"</code>

<code>        </code><code>android:pivotY=</code><code>"50%"</code>

<code>        </code><code>android:duration=</code><code>"3000"</code> <code>/&gt;</code>

   属性:interpolator 指定一个动画的插入器有三种动画插入器:

               accelerate_decelerate_interpolator 加速-减速 动画插入器

               accelerate_interpolator 加速-动画插入器

               decelerate_interpolator 减速- 动画插入器

   其他的属于特定的动画效果

       A.浮点数型值:

           fromDegrees 属性为动画起始时物件的角度

           toDegrees 属性为动画结束时物件旋转的角度 可以大于360度

       当角度为负数——表示逆时针旋转

       当角度为正数——表示顺时针旋转

       (负数from——to正数:顺时针旋转)

       (负数from——to负数:逆时针旋转)

       (正数from——to正数:顺时针旋转)

       (正数from——to负数:逆时针旋转)

   pivotX 属性为动画相对于物件的X坐标的开始位置

   pivotY 属性为动画相对于物件的Y坐标的开始位置

   说明: 以上两个属性值 从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置

       B.长整型值:

               duration 属性为动画持续时间,时间以毫秒为单位

如何使用XML中的动画效果

<code>/**</code>

<code>*Context  为程序的上下文</code>

<code>*id  为动画XML文件的引用</code>

<code>**/</code>

<code>public</code> <code>static</code> <code>Animation loadAnimation (Context context, </code><code>int</code> <code>id)</code>

<code>//例子:</code>

<code>myAnimation= AnimationUtils.loadAnimation(</code><code>this</code><code>,R.anim.my_action);</code>

<code>//使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件</code>

5.Android动画解析--JavaCode

 A.AlphaAnimation

       ① AlphaAnimation类对象定义

<code>private</code> <code>AlphaAnimation myAnimation_Alpha;</code>

② AlphaAnimation类对象构造    

<code>AlphaAnimation(float fromAlpha, float toAlpha)</code>

<code>//第一个参数fromAlpha为 动画开始时候透明度</code>

<code>//第二个参数toAlpha为 动画结束时候透明度</code>

<code>myAnimation_Alpha=</code><code>new</code> <code>AlphaAnimation(</code><code>0</code><code>.1f, </code><code>1</code><code>.0f);</code>

<code>//说明:</code>

<code>// 0.0表示完全透明</code>

<code>// 1.0表示完全不透明</code>

<code>myAnimation_Alpha.setDuration(</code><code>5000</code><code>);</code>

<code>//设置时间持续时间为 5000毫秒</code>

③ 设置动画持续时间

 B.ScaleAnimation

  ① ScaleAnimation类对象定义

       ② ScaleAnimation类对象构造

18

19

<code>ScaleAnimation(float fromX, float toX, float fromY, float toY,</code>

<code>int</code> <code>pivotXType, float pivotXValue, </code><code>int</code> <code>pivotYType, float pivotYValue)</code>

<code>//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸</code>

<code>//第二个参数toX为动画结束时 X坐标上的伸缩尺寸</code>

<code>//第三个参数fromY为动画起始时Y坐标上的伸缩尺寸</code>

<code>//第四个参数toY为动画结束时Y坐标上的伸缩尺寸</code>

<code>/*说明:</code>

<code>以上四种属性值</code>

<code>0.0表示收缩到没有</code>

<code>1.0表示正常无伸缩</code>

<code>值小于1.0表示收缩</code>

<code>值大于1.0表示放大</code>

<code>*/</code>

<code>//第五个参数pivotXType为动画在X轴相对于物件位置类型</code>

<code>//第六个参数pivotXValue为动画相对于物件的X坐标的开始位置</code>

<code>//第七个参数pivotXType为动画在Y轴相对于物件位置类型</code>

<code>//第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置</code>

<code>myAnimation_Scale =</code><code>new</code> <code>ScaleAnimation(</code><code>0</code><code>.0f, </code><code>1</code><code>.4f, </code><code>0</code><code>.0f, </code><code>1</code><code>.4f,</code>

<code>Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f, Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f);</code>

<code>myAnimation_Scale.setDuration(</code><code>700</code><code>);</code>

<code>//设置时间持续时间为 700毫秒</code>

C.TranslateAnimation

① TranslateAnimation类对象定义

       ② TranslateAnimation类对象构造

<code>TranslateAnimation(float fromXDelta, float toXDelta,</code>

<code>float fromYDelta, float toYDelta)</code>

<code>//第一个参数fromXDelta为动画起始时 X坐标上的移动位置</code>

<code>//第二个参数toXDelta为动画结束时 X坐标上的移动位置</code>

<code>//第三个参数fromYDelta为动画起始时Y坐标上的移动位置</code>

<code>//第四个参数toYDelta为动画结束时Y坐标上的移动位置</code>

       ③ 设置动画持续时间

<code>myAnimation_Translate.setDuration(</code><code>2000</code><code>);</code>

<code>//设置时间持续时间为 2000毫秒</code>

   D.RotateAnimation

     ① RotateAnimation类对象定义

       ② RotateAnimation类对象构造

<code>RotateAnimation(float fromDegrees, float toDegrees,</code>

<code>//第一个参数fromDegrees为动画起始时的旋转角度</code>

<code>//第二个参数toDegrees为动画旋转到的角度</code>

<code>//第三个参数pivotXType为动画在X轴相对于物件位置类型</code>

<code>//第四个参数pivotXValue为动画相对于物件的X坐标的开始位置</code>

<code>//第五个参数pivotXType为动画在Y轴相对于物件位置类型</code>

<code>//第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置</code>

<code>myAnimation_Rotate=</code><code>new</code> <code>RotateAnimation(</code><code>0</code><code>.0f, +</code><code>350</code><code>.0f,</code>

<code>Animation.RELATIVE_TO_SELF,</code><code>0</code><code>.5f,Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f);</code>

<code>myAnimation_Rotate.setDuration(</code><code>3000</code><code>);</code>

<code>//设置时间持续时间为 3000毫秒</code>

如何使用Java代码中的动画效果

   使用从View父类继承过来的方法startAnimation()来为View或是子类View等等添加一个动画效果

<code>public</code> <code>void</code> <code>startAnimation (Animation animation)</code>

   恩恩!差不多完了,这样看着爽多了哈~

     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1249022,如需转载请自行联系原作者