Переход Drawable с более чем 2 слоями

Может ли быть более 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"/>

P.S. неважно, что это ImageButton, это не имеет никакого значения.

И в моем коде я получил что-то вроде этого:

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

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


person Graykos    schedule 06.03.2013    source источник
comment
Разместите свой код. Что у вас есть сейчас?   -  person abc667    schedule 06.03.2013
comment
Вы нашли способ сделать несколько переходов? Я хочу стопку из 6 фотографий, а затем случайным образом меняю одну на другую.   -  person Diego    schedule 07.04.2013
comment
создайте список TrasitionDrawable, см. [этот ответ от yahor10][1]. [1]: stackoverflow.com/questions/13284221/android-transition   -  person FOAD    schedule 21.05.2013
comment


Ответы (4)


Похоже, что TransitionDrawable предназначен для работы только с двумя слоями. Взято из документации Android для класса:

Расширение LayerDrawables, предназначенное для плавного перехода между первым и вторым слоями.

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

person Boris Strandjev    schedule 08.05.2013

вы можете попробовать этот вариант с помощью обработчика

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);
person Om Prakash Agrahari    schedule 05.08.2016

Вы можете сделать это с помощью комбинации использования обработчика и повторного применения TransitionDrawable для элементов массива.

См. мой ответ на странице https://stackoverflow.com/a/54584103/114549.

person aaronvargas    schedule 07.02.2019

Похоже, вам может понадобиться AnimationDrawable:

http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

person dreid    schedule 26.08.2014