android动画

来源:互联网 发布:唐安琪烧伤 知乎 编辑:程序博客网 时间:2024/06/04 20:05

Android 3.0之前支持两种动画模式,tween animation ,frame animation。在android 3.0 又引入了一种新的动画系统 property animation。

这三种动画模式在sdk中成为 view animation ,frame animation 和property animation。

可以通过NineOldAndroids 项目在android3.0之前的系统中使用Property Animation。

1. View Animation (Tween Animation):

      View 形状的变化,主要有透明度渐变 AlaphaAnimation ,画面旋转 RotateAnimation, 尺寸变化 ScaleAnimation,位置移动 TranslateAnimation。可以通过/res/anim文件中<scale><translate><alpha><rotate>来声明这些动画,建议写在xml中,增加代码的重用性。

<set xmlns:android="http://schemas.android.com/apk/res/android">

</pre><pre name="code" class="html">    <translate        android:fromXDelta="0%p"        android:toXDelta="-100%p"        android:duration="300">    </translate></set>
<scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"       android:fromXScale="1.0"       android:toXScale="1.4"       android:fromYScale="1.0"       android:toYScale="0.6"       android:pivotX="50%"       android:pivotY="50%"       android:fillAfter="false"       android:duration="700"/>

      

      view animation 参数详细说明:

表二

XML节点功能说明alpha渐变透明度动画效果<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />fromAlpha

属性为动画起始时透明度

0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字toAlpha属性为动画结束时透明度

表三

scale渐变尺寸伸缩动画效果<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />fromXScale[float] fromYScale[float]为动画起始时,X、Y坐标上的伸缩尺寸0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大toXScale [float]
toYScale[float]为动画结束时,X、Y坐标上的伸缩尺寸pivotX[float]
pivotY[float]为动画相对于物件的X、Y坐标的开始位置属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置    

表四

translate画面转换位置移动动画效果<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />fromXDelta
toXDelta为动画、结束起始时 X坐标上的位置 fromYDelta
toYDelta为动画、结束起始时 Y坐标上的位置     

表五

rotate画面转移旋转动画效果<rotate
android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />fromDegrees为动画起始时物件的角度说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)toDegrees属性为动画结束时物件旋转的角度 可以大于360度pivotX
pivotY为动画相对于物件的X、Y坐标的开始位说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置    

android:interpolator  用来修饰动画的变化效果。

AccelerateDecelerateInterpolator   在动画开始和结束的的时候比较慢,在中间时刻加速

AccelerateInterpolator                       在动画开始的的时候比较慢,后面加速

DecelerateInterpolator                      在动画开始的时候比较快,后面变慢   

AnticipateInterpolator                        开始的时候向后然后向前甩

AnticipateOvershootInterpolator      开始的时候向后然后向前甩一定值后返回到最后的值

BounceInterpolator                            动画结束的时候弹起

CycleInterpolator                                动画循环播放特定的次数,速率该变沿着正弦曲线  

LinearInterpolator                              以恒定的速率变化

OvershootInterpolator                        向前刷一定的值后再回到原来位置



2、Drawable Animation (Frame Animation)

     帧动画,类似GIF动画,通过一次显示一系列的drawable来达到动画的效果。

     放在/res/drawable

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="true">    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /></animation-list>

        image = (ImageView) findViewById(R.id.frame_image);          image.setBackgroundResource(R.anim.frame);          AnimationDrawable anim = (AnimationDrawable) image.getBackground();          anim.start();  



0 0
原创粉丝点击