ObjectAnimator.ofFloat(view, "alpha", 1f, 0f):淡出(透明度 1→0)。ObjectAnimator.ofFloat(view, "alpha", 0f, 1f):淡入(0→1)。AnimatorSet.play(anim1).before(anim2):順序播放。AnimatorSet.play(anim1).with(anim2):並行播放。ValueAnimator fadeOut = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f);
fadeOut.setDuration(1000);
fadeOut.setInterpolator(new AccelerateInterpolator());
ValueAnimator moveLeft = ObjectAnimator.ofFloat(view, "x", view.getX(), view.getX() - view.getWidth());
moveLeft.setDuration(1000);
moveLeft.setInterpolator(new DecelerateInterpolator());
AnimatorSet leftOut = new AnimatorSet();
leftOut.play(moveLeft).before(fadeOut); // 先左移再淡出
ValueAnimator fadeIn = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);
fadeIn.setDuration(1000);
ValueAnimator moveRight = ObjectAnimator.ofFloat(view, "x", view.getX() + 2*view.getWidth(), view.getX());
moveRight.setDuration(1000);
AnimatorSet rightIn = new AnimatorSet();
rightIn.play(fadeIn).with(moveRight); // 淡入同時右移進場
AnimatorSet sequence = new AnimatorSet();
sequence.playSequentially(leftOut, rightIn);
sequence.setStartDelay(500);
sequence.start();
"alpha"、"translationX"、"x" 等 View 屬性名。Interpolator 決定變化曲線:Accelerate 加速、Decelerate 減速、Linear 均速。AnimatorListenerAdapter 監聽 onAnimationEnd 鏈接下一組動畫。onDestroy() 中 animator.cancel() 防內存洩漏。靈活組合 ObjectAnimator + AnimatorSet,實現任意複雜的淡入淡出+位移+旋轉+縮放序列動畫。