@gflower

Смена одной на другую frame-by-frame анимации в Android?

Возникла проблема с показом второй анимации в том же ImageView.

Первая анимация показывается без проблем. А вторая, подставляемая в тот же самый ImageView, показывает только первый кадр. Возникает вопрос: можно ли вообще менять анимации, и если да, то как это делать правильно?


Пример безуспешного кода:


public void onWindowFocusChanged(boolean hasFocus) {<br/>
<br/>
super.onWindowFocusChanged(hasFocus);<br/>
<br/>
if (hasFocus) {<br/>
<br/>
ImageView imgView= (ImageView) findViewById(R.id.imgView);<br/>
<br/>
// первая анимация<br/>
<br/>
imgView.setBackgroundResource(R.anim.animation1);<br/>
 AnimationDrawable frameAnimation = (AnimationDrawable) imgView<br/>
 .getBackground();<br/>
<br/>
frameAnimation.setCallback(imgView);<br/>
 frameAnimation.start();<br/>
<br/>
//Schedule the timer<br/>
<br/>
Timer timer = new Timer();<br/>
 timer.schedule(new TimerTask() {<br/>
<br/>
@Override<br/>
 public void run() {<br/>
 // показываем вторую<br/>
 showAnimation2();<br/>
 }<br/>
 }, 20000);<br/>
 }//if hasFocus<br/>
<br/>
}<br/>
<br/>
/**<br/>
 * Вторая анимация<br/>
 */ <br/>
public void showAnimation2(){<br/>
 ImageView imgView= (ImageView) findViewById(R.id.imgView);<br/>
<br/>
AnimationDrawable frameAnimation = (AnimationDrawable) imgView<br/>
 .getBackground();<br/>
<br/>
// stop first animation<br/>
 frameAnimation.stop();<br/>
<br/>
imgView.setBackgroundResource(R.anim.animation2);<br/>
 frameAnimation.setCallback(imgView);<br/>
<br/>
//start second animation<br/>
 frameAnimation.start();<br/>
<br/>
// here I see the first frame of second animation only<br/>
}<br/>


  • Вопрос задан
  • 2915 просмотров
Решения вопроса 1
@gflower Автор вопроса
Отвечаю сам себе. Решение такое: делаем две анимации. Первую показываем, а вторую скрываем. После окончания первой анимации, делаем ее невидимой и показываем вторую.

Но в итоге для показа графики я перешел на AndEngine. Там с анимированными спрайтами проблем не возникло.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы