APP开发实战

APP开发实战86-View动画

2016-07-19  本文已影响20人  xjbclz

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

上一篇下一篇

猜你喜欢

热点阅读