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