1. ValueAnimation
进行 值 的更改,做种结果为 从 0-1 递增,执行时长为2秒
package com.example.myshuxing; 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 animation) { float value = (float)animation.getAnimatedValue(); Log.e("leo", "onAnimationUpdate: "+value ); } }); valueAnimator.start(); } }
2. ObjectAnimator 结合控件使用,其中 ofFloat 方法中的第二个参数可以使用 平移、旋转、透明度等设置
TextView view = findViewById(R.id.textmain); ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(view, "alpha",0f,1f); objectAnimator.setDuration(4000); objectAnimator.start();
3.监听器 针对于动画执行过程中的状态,进行调用的方法,一下为几个示例,调用上述的 objectAnimator动画的监听
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) { } }); //可以直接选择所要使用的监听方法 objectAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); } });