使用YoYo动画库
首先在Gradle里面引入YoYo
implementation ("com.daimajia.androidanimations:library:2.4@aar")
设置动画类型,时间,循环
import com.daimajia.androidanimations.library.Techniques; import com.daimajia.androidanimations.library.YoYo; public void openwan() { YoYo.with(Techniques.RollOut) .duration(700) //设置执行时间 .repeat(0) //设置重复次数 .onEnd(animator -> { // 在动画结束时执行的操作 }) .playOn(binding.wan); // 使用YoYo库执行RollOut动画 }
自定义动画-平移动画
/** * 开盖动画 * * @param gameInsanity 动画目标视图 * @param init 是否为初始化状态 */ public void animateGameInsanity(View gameInsanity, boolean init) { AnimatorSet animatorSet = createAnimatorSet(gameInsanity, -210f, 300f, 4f, 3.6f, 700); // 添加动画监听器 animatorSet.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { //动画开始时执行 } @Override public void onAnimationEnd(Animator animation) { //动画结束时执行 } @Override public void onAnimationCancel(Animator animation) { //动画取消时执行 } @Override public void onAnimationRepeat(Animator animation) { //动画重复时执行 } }); animatorSet.start(); // 启动动画 }
自定义动画-平移缩放动画
/** * 创建一个AnimatorSet,用于组合多个动画 * * @param view 目标视图 * @param translationX X轴平移 * @param translationY Y轴平移 * @param scaleX X轴缩放 * @param scaleY Y轴缩放 * @param duration 动画持续时间 * @return AnimatorSet 对象 */ private AnimatorSet createAnimatorSet(View view, float translationX, float translationY, float scaleX, float scaleY, int duration) { ObjectAnimator moveX = ObjectAnimator.ofFloat(view, "translationX", translationX); ObjectAnimator moveY = ObjectAnimator.ofFloat(view, "translationY", translationY); ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(view, "scaleX", scaleX); ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(view, "scaleY", scaleY); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(moveX, moveY, scaleXAnim, scaleYAnim); // 同时播放所有动画 animatorSet.setDuration(duration); // 设置动画持续时间 animatorSet.setInterpolator(new DecelerateInterpolator()); // 设置插值器 return animatorSet; }