我必須動畫循環倒數計時器,並通過使用AnimationDrawable動畫ImageView的背景(每個圖像具有相應的切片圓)。問題是用戶有能力暫停這個動畫,所以我必須重新加載動畫,但隨後出現問題。我嘗試將動畫設置爲null,將ImageView的背景設置爲null,設置動畫的可見性,但幾乎沒有任何幫助,因爲幀數保持不變。我必須找到一種解決方法來刪除所有幀並添加新幀或將整個動畫重置爲默認狀態。如何重置AnimationDrawable
第1步 - 初始化動畫(起始幀指數爲0)
timerView.setBackgroundResource(R.drawable.timer_switch);
timerAnimation = (AnimationDrawable)timerView.getBackground();
System.out.println("Number of frames: " + timerAnimation.getNumberOfFrames());
for (int frameIndex = startingFrameIndex; frameIndex < 60; frameIndex++) {
if (frameIndex < 10) {
uri = "drawable/timer_0000" + frameIndex;
} else {
uri = "drawable/timer_000" + frameIndex;
}
imageResourceId = getResources().getIdentifier(uri, null, getPackageName());
timerAnimation.addFrame(getResources().getDrawable(imageResourceId), timerImageFrameDuration);
}
第2步 - 這裏是棘手的部分,我不知道該怎麼辦。我已經試過的東西:
timerAnimation.stop();
timerAnimation.setCallback(null);
timerAnimation.setVisibility(true, false);
timerAnimation = null;
第3步 - 調用第2步後,我打電話第1步中再次,但Sys.out仍顯示60幀的當前數量。 (當點擊暫停按鈕時,此處的起始索引被設置爲最後的隱藏幀)。
歡迎任何想法。
謝謝
能ViewCompat.jumpDrawablesToCurrentState幫助:http://developer.android。 com/reference/android/support/v4/view/ViewCompat.html#jumpDrawablesToCurrentState(android.view.View)? –