Мне нужно анимировать таймер кругового обратного отсчета, и я делаю это, анимируя фон ImageView с помощью AnimationDrawable (каждое изображение имеет соответствующий фрагмент удаленного круга). Проблема в том, что у пользователя есть возможность приостановить эту анимацию, поэтому я должен перезагрузить анимацию, но затем появляется проблема. Я попытался установить для анимации значение NULL, установить для фона ImageView значение NULL, установить видимость анимации, но практически ничего не помогло, поскольку количество кадров остается неизменным. Я должен найти обходной путь для удаления всех кадров и добавления новых или для сброса всей анимации в состояние по умолчанию.
Шаг 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 как текущее количество кадров. (начальный индекс здесь устанавливается на последний скрытый кадр при нажатии кнопки паузы.)
Любая идея приветствуется.
Спасибо