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

Android动画合集之补间动画

程序员文章站 2024-03-24 08:37:34
...

补间动画分类:

TranslateAnimation(位移动画)
RotateAnimation(旋转动画)
ScaleAnimation(缩放动画)
AlphaAnimation(透明度渐变)
AnimationSet(组合渐变)

1.位移动画

TranslateAnimation animation =new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,1f,Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,1f);
        animation.setDuration(2000);
        animation.setInterpolator(this, android.R.anim.linear_interpolator);
        img.startAnimation(animation);
        animation.start();

2.旋转动画

RotateAnimation animation = new RotateAnimation(0, 720, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0f);
        animation.setDuration(5000);
        animation.setInterpolator(this, android.R.anim.accelerate_interpolator);
        img.startAnimation(animation);
        animation.start();

3.缩放动画

        ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.6f, 1.2f, 1.0f, 0.6f, 1.2f, 1.0f);
        animator.setDuration(6000L);//设置缩放时间
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float scale = (Float) animation.getAnimatedValue();
                img.setScaleX(scale);
                img.setScaleY(scale);
            }
        });
        animator.setInterpolator(new LinearInterpolator());
        animator.start();
    }

4.透明动画

                AlphaAnimation animation = new AlphaAnimation(1, 0);
                animation.setDuration(2000);
                animation.setRepeatCount(-1);
                img.startAnimation(animation);
                animation.start();

5.组合渐变

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <scale
        android:duration="5000"
        android:fromXScale="0.2"
        android:fromYScale="0.2"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.5"
        android:toYScale="1.5" />

    <!--fromXScale/fromYScale:沿着X轴/Y轴缩放的起始比例-->
    <!--toXScale/toYScale:沿着X轴/Y轴缩放的结束比例-->
    <!--pivotX/pivotY:缩放的中轴点X/Y坐标,即距离自身左边缘的位置,比如50%就是以图像的 中心为中轴点-->


    <rotate
        android:duration="5000"
        android:fromDegrees="0"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:toDegrees="360" />

    <!--fromDegrees/toDegrees:旋转的起始/结束角度-->
    <!--repeatCount:旋转的次数,默认值为0,代表一次,假如是其他值,
    比如3,则旋转4次 另外,值为-1或者infinite时,表示动画永不停止-->
    <!--repeatMode:设置重复模式,默认restart,但只有当repeatCount大于0或者infinite或-1时才有效。
    还可以设置成reverse,表示偶数次显示动画时会做方向相反的运动!-->


    <translate
        android:duration="5000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="320"
        android:toYDelta="0" />

    <!--fromXDelta/fromYDelta:动画起始位置的X/Y坐标-->
    <!--toXDelta/toYDelta:动画结束位置的X/Y坐标-->


    <alpha
        android:duration="5000"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />

    <!--duration :时间-->
    <!--fromAlpha :起始透明度-->
    <!--toAlpha:结束透明度-->
</set>
       
       //在MainActivity中的代码
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);
        img.startAnimation(animation);

参考文档:http://www.runoob.com/w3cnote/android-tutorial-alphaanimation.html