Android动画分析
程序员文章站
2022-03-16 21:28:53
...
View动画
View动画的作用对象是View,它支持四中动画效果,分别是平移动画、缩放动画、旋转动画和透明度动画。
View动画的种类
四种view动画都可以用XML或通过代码来动态创建,对于view动画来说,建议采用XML来定义动画,因为可读性较好。
要使用view动画首先要创建XML问价,位于res/anim/xxx.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="float"
android:toAlpha="float">
</alpha>
<scale
android:fromXScale="float"
android:fromYScale="float"
android:pivotX="float"
android:pivotY="float"
android:toXScale="float"
android:toYScale="float">
</scale>
<translate
android:fromXDelta="float"
android:fromYDelta="float"
android:toXDelta="float"
android:toYDelta="float">
</translate>
<rotate
android:fromDegrees="float"
android:pivotX="float"
android:pivotY="float"
android:toDegrees="float">
</rotate>
</set>
常用属性
Android:interpolater——表示动画集合所采用的差值器,影响动画速度。
Android:duration——动画持续时间;
Android:fillAfter——动画结束以后Viw是否停留在结束位置,true表示View停留在结束位置,反之。
实例
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:zAdjustment="normal">
<!--zAdjustment 允许在动画播放期间,调整播放内容在Z轴方向的顺序,-->
<translate
android:duration="100"
android:fromXDelta="0"
android:fromYDelta="0"
android:interpolator="@android:anim/linear_interpolator"
android:toXDelta="100"
android:toYDelta="100"
/>
<rotate
android:duration="400"
android:fromDegrees="0"
android:toDegrees="90"></rotate>
</set>
使用上面动画 button = (Button) findViewById(R.id.button);
Animation animation = AnimationUtils.loadAnimation(this,R.anim.button_anim);
button.startAnimation(animation);
使用代码来应用动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
alphaAnimation.setDuration(1000);
button.startAnimation(alphaAnimation);
创建一个透明动画,将button在1000ms内,使透明度从0变为1.
可以通过Animationde的setAnimationListener方法给View动画添加过程监听。
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
帧动画
帧动画是顺序播放一组预先定义好的图片,类似与放电影。使用AnimationDrawa来使用帧动画。
<?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/a" android:duration="500"></item>
<item android:drawable="@drawable/aa" android:duration="500"></item>
<item android:drawable="@drawable/aaa" android:duration="500"></item>
</animation-list>
AnimationDrawable animationDrawable = (AnimationDrawable) button.getBackground();
animationDrawable.start();
帧动画容易引起内存溢出,所以尽量使用尺寸较大的图片。上一篇: ubuntu14.04下安装显卡驱动后无法调节亮度问题
下一篇: JavaScript中的NaN