22.2View动画
View动画就是很多书籍所说的TweenedAnimation(有人翻译为补间动画),它通过对场景里的对象不断做图像变换(平移、缩放、旋转和透明度)从而产生动画效果,它是一种渐进式动画。动画的作用对象是View,支持四种动画效果,对应Animation的四个子类,具体如下表所示:
名称
标签
子类
效果
平移动画
TranslateAnimation
移动View
缩放动画
ScaleAnimation
放大或缩小View
旋转动画
RotateAnimation
旋转View
透明度动画
AlphaAnimation
改变View的透明度
对于View动画,通常也是用XML文件定义动画:
Android="http://schemas.android.com/apk/res/android"
android:interpolator="@[package:]anim/interpolator_resource"
android:shareInterpolator=["true"| "false"] >
android:fromAlpha="float"
android:toAlpha="float"/>
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float"/>
android:fromXDelta="float"
android:toXDelta="float"
android:fromYDelta="float"
android:toYDelta="float"/>
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float"/>
...
该文件只能有一个根结点,可以是、、、或。结点可以包含子节点,即可以包含、、、或。
android:interpolator表示所使用的interpolator,可以是系统自带,也可以是自定义。
android:shareInterpolator表示是否将该Interpolator共享给子节点。
android:pivotX和android:pivotY定义的是此次动画变化的轴心位置,默认是左上角,当我们把它们两者都赋值为50%,则变化轴心在中心。
具体实例:
android:shareInterpolator="false">
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="1000"/>
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="1000">
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400"/>
android:fromDegrees="0"
android:toDegrees="60"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400"/>
andoird:fillAfter:动画结束以后View是否停留在结束位置,true表示停留,false表示不停留。
startOffset:该属性定义动画推迟多久开始,通过这个属性的设置,我们可以设计一些前后按序发生的动画,当然,除了最后一个发生的动画,其他动画得设置fillAfter为true。
使用代码:
AnimationdemoAnim = AnimationUtils.loadAnimation(this, R.anim.demoanim);
demoAnim.startAnimation(demoanim);
参考:《Android开发艺术探索》和 http://blog.csdn.net/chziroy/article/details/40456399