Добавить переход к 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();
}
}