Android 可拉伸的过渡层超过2层

Android 可拉伸的过渡层超过2层,android,transition,android-drawable,transitiondrawable,Android,Transition,Android Drawable,Transitiondrawable,过渡期可提取的项目是否可以超过2个?我需要改变背景,使第二帧淡入,而不是第三帧淡入,依此类推到第四帧 现在我有这个: <?xml version="1.0" encoding="UTF-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/voting_button_not1"/>

过渡期可提取的项目是否可以超过2个?我需要改变背景,使第二帧淡入,而不是第三帧淡入,依此类推到第四帧

现在我有这个:

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/voting_button_not1"/>
    <item android:drawable="@drawable/voting_button_not2"/>
    <item android:drawable="@drawable/voting_button_not3"/>
    <item android:drawable="@drawable/voting_button_not4"/>
    <item android:drawable="@drawable/voting_button_not5"/>
    <item android:drawable="@drawable/voting_button_not1"/>
</transition>

它播放从第一项到第二项的转换。但是我需要播放完整的列表。

看起来像是
TransitionDrawable
只用于两层操作。摘自本课程的主题:

LayerDrawables的一个扩展,用于在 第一层和第二层


我认为您可以指定两个以上的层,因为这是layered drawable的扩展,但在
TransitionDrawable
的情况下,实际上只使用前两个层。

听起来您可能需要AnimationDrawable:


您可以使用处理程序尝试此选项

mAnimateImage是一个imageView DrawableImage是一个具有drawables的数组

int DrawableImage[] = {R.drawable.back_red , R.drawable.back_green, R.drawable.back_purple};

final Handler handler = new Handler();
final int[] i = {0};
final int[] j = {1};
handler.postDelayed(new Runnable() {
    @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Resources res = getApplicationContext().getResources();
                    TransitionDrawable out = new TransitionDrawable(new Drawable[]{res.getDrawable(DrawableImage[i[0]]), res.getDrawable(DrawableImage[j[0]])});
                    out.setCrossFadeEnabled(true);
                    mAnimateImage.setImageDrawable(out);
                    out.startTransition(4000);
                    i[0]++;
                    j[0]++;
                    if (j[0] == DrawableImage.length) {
                        j[0] = 0;
                    }
                    if (i[0] == DrawableImage.length) {
                        i[0] = 0;
                    }
                    handler.postDelayed(this, 8000);
                }
            });
        }
    }, 0);

可以结合使用处理程序和为数组元素重新应用TransitionDrawable来实现这一点


请参见我的答案,网址为

发布您的代码。你现在有什么?你有没有找到一种方法来进行多重转换?我想要一堆6张照片,然后从一张随机切换到另一张。制作一个可绘制的列表,请参见[yahor10的回答][1]。[1]:
TransitionDrawable vote_not = (TransitionDrawable)skip.getBackground();
vote_not.startTransition(1000);
int DrawableImage[] = {R.drawable.back_red , R.drawable.back_green, R.drawable.back_purple};

final Handler handler = new Handler();
final int[] i = {0};
final int[] j = {1};
handler.postDelayed(new Runnable() {
    @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Resources res = getApplicationContext().getResources();
                    TransitionDrawable out = new TransitionDrawable(new Drawable[]{res.getDrawable(DrawableImage[i[0]]), res.getDrawable(DrawableImage[j[0]])});
                    out.setCrossFadeEnabled(true);
                    mAnimateImage.setImageDrawable(out);
                    out.startTransition(4000);
                    i[0]++;
                    j[0]++;
                    if (j[0] == DrawableImage.length) {
                        j[0] = 0;
                    }
                    if (i[0] == DrawableImage.length) {
                        i[0] = 0;
                    }
                    handler.postDelayed(this, 8000);
                }
            });
        }
    }, 0);