欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
帧动画容易引起内存溢出,所以尽量使用尺寸较大的图片。










相关标签: 动画 帧动画