目前使用过android三种动画:
1.补间动画(Tween Animation)
可在xml定义<alpha>、<scale>、<translate>、<rotate>这四种属性。
alpha 可以控制控件的透明度来达到渐变的效果。
scale 缩放
translate 位移
rotate 旋转
使用举例说明:
animation_alpha.xmnl <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400"> </alpha> Animation animAlpha = AnimationUtils.loadAnimation(context, R.anim.animation_alpha); imageView.startAnimation(animAlpha); 也可以直接在代码中使用。
2.帧动画
帧动画类似播放电影,控制每一帧的显示。
frame.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/frame00" android:duration="40" />
<item android:drawable="@drawable/frame01" android:duration="40" />
<item android:drawable="@drawable/frame02" android:duration="40" />
......
</animation-list>
imageView.setImageResource(R.drawable.frame);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
animationDrawable .start();
PS:
oneshot 为true,表示动画只会播放一次,结束后会停止在最后一帧上,设置为false,则表示动画循环播放。
duration表示每一帧的播放时间是多少毫秒。
3.属性动画
与补间动画不同,补间动画只是对view进行绘制,然而它的属性并没有改变,比如你移动一个按钮,看起来它的位置改变,其实它的点击区域还是在原来的位置。而属性动画则可以改变真正的属性,移动后点击位置也会发生相应的改变。属性动画其实就是通过修改对像的属性,设置一段时间,从而使对象展现出动画效果。
最简单的渐变效果:
PropertyValuesHolder pvhA = PropertyValuesHolder.ofFloat("alpha", 0f, 1.0f);
ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(view, pvhA);
objectAnimator.setDuration(400);
objectAnimator.start();
对于多个动画组合可以进行如下设置:
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setInterpolator(new AccelerateInterpolator());//时间插值
animatorSet.setDuration(500);
animatorSet.playTogether(objectAnimator,objectAnimator,...);//一起播放