Android-анимация: дождаться завершения?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android-анимация: дождаться завершения?

Сообщение Anonymous »

Я хотел бы дождаться завершения анимации* в Android ImageView, прежде чем продолжить выполнение программы. Как это правильно сделать?
  • (в данном контексте «закончено» означает, что она проходит через все свои кадры ровно один раз и останавливается на последнем. Я не знаю, будет ли эта анимация анимацией 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»