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

(安卓自学笔记)四种有关控件的动画Animation

程序员文章站 2022-05-04 20:01:54
...
原文章:
点击打开链接四种方法
点击打开链接属性介绍
点击打开链接插值器简介
点击打开链接插值器详解
首先声明一个Imageview用来运行动画
private ImageView imageView

声明四种动画

    private RotateAnimation rotateAnimation;
    private ScaleAnimation scaleAnimation;
    private TranslateAnimation translateAnimation;
    private AlphaAnimation alphaAnimation;
实现方法:
    xxAnimation xx=new xxAnimation();
RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 
参数说明: 
float fromDegrees:旋转的开始角度。 
float toDegrees:旋转的结束角度。 
int pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
float pivotXValue:X坐标的伸缩值。 
int pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。 
float pivotYValue:Y坐标的伸缩值。

ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 

参数说明: 

float fromX 动画起始时 X坐标上的伸缩尺寸 

float toX 动画结束时 X坐标上的伸缩尺寸 

float fromY 动画起始时Y坐标上的伸缩尺寸 

float toY 动画结束时Y坐标上的伸缩尺寸 

int pivotXType 动画在X轴相对于物件位置类型 

float pivotXValue 动画相对于物件的X坐标的开始位置 

int pivotYType 动画在Y轴相对于物件位置类型 

float pivotYValue 动画相对于物件的Y坐标的开始位置 

TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) 

参数说明: 

float fromXDelta 动画开始的点离当前View X坐标上的差值 

float toXDelta 动画结束的点离当前View X坐标上的差值 

float fromYDelta 动画开始的点离当前View Y坐标上的差值 

float toYDelta 动画开始的点离当前View Y坐标上的差值

AlphaAnimation(float fromAlpha,float toAlpha)

参数说明:

float fromAlpha 动画开始时透明度

float toAlpha 动画结束时透明度

四种动画的通用方法:

.setFillAfter(true);//动画执行完后是否停留在执行完的状态
.setRepeatCount(1);//设置重复次数
.setRepeatMode(android.view.animation.Animation.REVERSE);//设置重复执行模式(反方向执行)
.setDuration(1000);//设置动画持续时间 1S
.setStartOffset(long startOffset);//动画执行前的等待时间 

设置一个动画的监听器

.setAnimationListener(new android.view.animation.AnimationActivity.AnimationListener() {
            @Override
            public void onAnimationStart(android.view.animation.AnimationActivity animation) {
            }

            @Override
            public void onAnimationEnd(android.view.animation.AnimationActivity animation) {
                imageView.startAnimation(rotateAnimation);
            }

            @Override
            public void onAnimationRepeat(android.view.animation.AnimationActivity animation) {

            }
        });

设置Interpolator插值器来指定动画如何变化

.setInterpolator(new AccelerateInterpolator()); // 设置插值器
插值器种类
Android 动画之Interpolator插入器,比较简单和常用的:
(1)LinearInterpolator:动画从开始到结束,变化率是线性变化。
(2)AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
(3)DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
(4)CycleInterpolator:动画从开始到结束,变化率是循环给定次数的正弦曲线。
(5)AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。

启动方式一:单一动画

imageView.startAnimation(rotateAnimation);
注明:属于更新UI操作,需要主线程消息

启动方式二:多个动画

AnimationSet set=new AnimationSet(false);//整体动画设置
                    set.addAnimation(rotateAnimation);//
                    set.addAnimation(alphaAnimation);//
                    set.setFillAfter(true);//
                    imageView.startAnimation(set);//
相关标签: 安卓 动画