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><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?></code>
<code><</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code><code>></code>
<code> </code><code><alpha/></code>
<code> </code><code><scale/></code>
<code> </code><code><translate/></code>
<code> </code><code><rotate/></code>
<code></</code><code>set</code><code>></code>
4.Android动画解析--XML
<alpha> 透明度
8
<code><</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code> <code>></code>
<code> </code><code><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>/></code>
注释:
fromAlpha(浮点型值) 属性为动画起始时透明度, 0.0表示完全透明
toAlpha(浮点型值) 属性为动画结束时透明度, 1.0表示完全不透明.
fromAlpha 和 toAlpha 的取值在0.0-1.0之间的float数据类型的数字
duration(长整型值) 属性为动画持续时间,时间以毫秒为单位
<scale> 缩放
9
10
11
12
13
14
15
16
17
<code> </code><code><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>/></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 ,该动画转化在动画结束后被应用
<translate> 移动
<code> </code><code><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>/></code>
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间,时间以毫秒为单位
<rotate> 旋转
<code> </code><code><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>/></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,如需转载请自行联系原作者