21. 属性动画

21. 属性动画

21.1 ValueAnimator类

改变值

package com.dingjiaxiong.myshuxingdonghua;

import androidx.appcompat.app.AppCompatActivity;

import android.animation.ValueAnimator;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //创建
        ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f);
        //设置周期
        valueAnimator.setDuration(2000);
        //设置更新监听
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                float value = (float) valueAnimator.getAnimatedValue();
                //打印当前值
                Log.e("dingjiaxiong", "onAnimationUpdate: " + value);

            }
        });
        //启动动画
        valueAnimator.start();

    }
}

运行

在这里插入图片描述

21.2 ObjectAnimator类

给hello world TextView加上id

在这里插入图片描述

TextView textView = findViewById(R.id.tv);
//让TextView的透明度,从完全透明到不透明
ObjectAnimator objectAnimator = (ObjectAnimator) ObjectAnimator.ofFloat(textView,"alpha",0f,1f);
objectAnimator.setDuration(4000);
objectAnimator.start();

运行

在这里插入图片描述

只要类中存在set和get方法,就可以用这个实现变化

在这里插入图片描述

在这里插入图片描述

【小写】

21.3 监听器

objectAnimator.addListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animator) {
        //动画开始时调用
    }

    @Override
    public void onAnimationEnd(Animator animator) {
        //动画结束时调用
    }

    @Override
    public void onAnimationCancel(Animator animator) {
        //动画被取消时调用
    }

    @Override
    public void onAnimationRepeat(Animator animator) {
        //动画重复执行时调用
    }
});

适配器方式

在这里插入图片描述

选一个方法

在这里插入图片描述

就可以实现只用一个,就只写一个。

posted @ 2022-09-19 07:52  随遇而安==  阅读(13)  评论(0编辑  收藏  举报