Добавить переход к AnimationDrawable

У меня есть набор из 10 изображений, и я хочу создать анимацию, где я скрещиваюсь между ними. Я искал во встроенном Drawable для достижения такой цели, но не повезло с этой стороны. Существует AnimationDrawable, который переключается между изображениями, но он не анимирует переключение. Существует TransitionDrawable, который затухает между двумя картинками, но не более двух.

Ад.

Я искал какое-то решение в Google, но безуспешно. Так что я думаю о реализации моей собственной прорисовки для достижения такой цели. У кого-нибудь из вас есть указатели?

Заранее спасибо.

2 ответа

Решение

Не уверен, что вы нашли ответ на этот вопрос, но у меня возникла та же проблема, и в итоге я создал собственный класс на основе TransitionDrawable.

Использование:

CyclicTransitionDrawable ctd = new CyclicTransitionDrawable(new Drawable[] { 
  drawable1, 
  drawable2, 
  drawable3, 
  ... 
});

imageView.setImageDrawable(ctd);

ctd.startTransition(1000, 3000) // 1 second transition, 3 second pause between transitions.

Код для CyclicTransitionDrawable доступен на Github.

Что ж. Прошло много времени, и вы, вероятно, исправили проблему, но вы получили setEnterFaceDuration() для AnimationDrawable. Пример:

mBackgroundAnimation = new AnimationDrawable();
mBackgroundAnimation.addFrame(getResources().getDrawable(R.drawable.background1), 5000); 
// ... rest of the frames
mBackgroundAnimation.addFrame(getResources().getDrawable(R.drawable.background6), 5000);
mBackgroundAnimation.setEnterFadeDuration(1000);
mBackgroundAnimation.setOneShot(false);

С помощью этого кода вы легко перемещаетесь по изображениям 1..N, каждое из которых остается 5 с (5000 мс) с постепенной анимацией. Теперь, что я делаю, это устанавливаю фон моего корня RelativeLayout

mLayoutRoot.setBackground(mBackgroundAnimation);
mLayoutRoot.post(new AnimationStarterThread());

И класс AnimationStarterThread

private class AnimationStarterThread implements Runnable {
    public void run() {
        if(mBackgroundAnimation != null)
             mBackgroundAnimation.start();
    }
}
Другие вопросы по тегам