具有超过2个图层的过渡可绘制对象

4

转换可绘制对象中是否可以有超过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>

我得到了按钮:
<ImageButton android:id="@+id/skipButton"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/coldf1f2"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true"/>

顺便说一下,它是一个ImageButton并不重要。

在我的代码中,我得到了这样的东西:

TransitionDrawable vote_not = (TransitionDrawable)skip.getBackground();
vote_not.startTransition(1000);

它只播放第一项到第二项的过渡效果,但我需要整个列表都播放。

发布你的代码。你现在有什么? - abc667
你找到了进行多个转换的方法吗?我想要一堆6张照片,然后随机从其中一张切换到另一张。 - Diego
制作一个TransitionDrawable列表,请参见yahor10的这个答案 - FOAD
你可以在这里检查我的答案。希望能对你有所帮助。 - Om Prakash Agrahari
4个回答

2
似乎 TransitionDrawable 只能操作两层。引用自 Android 文档 中对该类的描述:

这是 LayerDrawables 的扩展,旨在淡入淡出第一层和第二层。

我认为你可以指定多于两个图层,因为这是分层可绘制对象的扩展,但实际上只使用了前两个图层。

0

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

mAnimateImage是一个imageView, DrawableImage是带有可绘制对象的数组

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

0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接