将转换添加到AnimationDrawable

我有一组10个图像,我想创build一个animation,在它们之间淡入淡出。 我一直在研究内置的Drawable来实现这样的事情,但没有运气的那部分。 有AnimationDrawable,它可以在图片之间切换,但不会为开关设置animation。 有TransitionDrawable,这两个图片之间淡入淡出,但不超过两个。

地狱。

我在Google上寻找了一些解决scheme,但在那一部分没有运气。 所以我想要实现我自己的drawable来实现这样的事情。 你们有没有任何指针?

提前致谢。

Solutions Collecting From Web of "将转换添加到AnimationDrawable"

不知道如果你find了这个答案,但我有同样的问题,并最终build立我自己的类基于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上可用 。

好。 很长时间过去了,你可能已经解决了这个问题,但是你得到了AnimationDrawable的setEnterFaceDuration()方法。 例:

 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(); } }