- (в данном контексте «закончено» означает, что она проходит через все свои кадры ровно один раз и останавливается на последнем. Я не знаю, будет ли эта анимация анимацией android:oneshot="true", потому что я буду использовать ее несколько раз, но она не будет запускаться непрерывно, но с перерывами)
А. По сути, мой вопрос, похоже, касается темы Java, потому что Android AnimationDrawable реализует Java.lang.Runnable. Так что, возможно, решение — это потоки. Возможно, ответ будет включать в себя объединение?
B. Подход других, похоже, заключался в использовании AnimationListener, это кажется трудным и излишне сложным для моих простых нужд. К тому же я не совсем понимаю, как это сделать.
C. Класс AnimationDrawable имеет (логический) метод isRunning, который, вероятно, можно использовать в цикле while (т. е. while(anim.isRunning()){wait(100ms)}). Но у меня есть нутром ощущение, что это неправильный подход. Хотя нечто подобное, кажется, упоминается в руководстве по параллелизму.
Фрагмент кода
Код: Выделить всё
this.q_pic_view.setImageResource(0);
this.q_pic_view.setBackgroundResource(R.drawable.animation_test);
AnimationDrawable correct_animation = (AnimationDrawable) this.q_pic_view.getBackground();
correct_animation.start();
//here I tried to implement option C but it didn't work
while(correct_animation.isRunning()){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Код: Выделить всё
Код: Выделить всё
int duration = 0;
//Add all of the frames together
for (int i=0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/5321344/android-animation-wait-until-finished[/url]
Мобильная версия