在Android中,ValueAnimator
類提供了一種簡單的方式來創建動畫,包括循環播放。要處理ValueAnimator
的動畫循環,你可以使用以下方法:
setRepeatCount(int)
方法可以設置動畫的重復次數。你可以將其設置為ValueAnimator.INFINITE
,這樣動畫就會無限循環播放。ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.setRepeatCount(ValueAnimator.INFINITE);
設置重復模式:
使用setRepeatMode(int)
方法可以設置動畫的重復模式。有兩種模式可供選擇:
ValueAnimator.RESTART
:動畫每次循環結束后,都會重新開始。ValueAnimator.REVERSE
:動畫每次循環結束后,都會反向進行到起始狀態。你可以將重復模式與重復次數結合使用,以實現更復雜的動畫效果。animator.setRepeatMode(ValueAnimator.RESTART);
addUpdateListener(ValueAnimator.AnimatorUpdateListener)
方法來監聽動畫的更新。在每次動畫更新時,你可以執行相應的操作,例如更新UI元素。animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float animatedValue = (float) animation.getAnimatedValue();
// 更新UI元素,例如改變控件的大小或位置
}
});
start()
方法啟動動畫。animator.start();
示例代碼:
import android.animation.ValueAnimator;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float animatedValue = (float) animation.getAnimatedValue();
// 更新UI元素,例如改變控件的大小或位置
}
});
animator.start();
}
}
在這個示例中,我們創建了一個ValueAnimator
,使其在0到1之間進行動畫,并且無限循環播放。每次動畫更新時,我們都會更新UI元素(在這個例子中,我們沒有實際的UI元素需要更新,所以這一步是可選的)。