Подтвердить что ты не робот

Кроссфейдинг с использованием TransitionDrawable, не работающий на Android

У меня есть два изображения, которые я хочу пересечь. Первоначально оба используют изображение. Затем я использую .getDrawable(), чтобы получить возможность рисования изображений.

Это код, который я использовал

Drawable backgrounds[] = new Drawable[2];
backgrounds[0] = BackgroundImage.getDrawable();
backgrounds[1] = BackgroundImageBlurred.getDrawable();

TransitionDrawable crossfader = new TransitionDrawable(backgrounds);
crossfader.startTransition(3000);

Он показывает только изображение первого элемента массива, которое он показывает, так как оба изображения были установлены на видимые в XML.

Переход не запускается

Любая помощь будет оценена:)

4b9b3361

Ответ 1

Вот пример, если у вас есть 2 drawables и вы хотите оживить их переход в некотором ImageView:

package com.example.app;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.widget.ImageView;

 class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Drawable backgrounds[] = new Drawable[2];
        Resources res = getResources();
        backgrounds[0] = res.getDrawable(android.R.drawable.btn_star_big_on);
        backgrounds[1] = res.getDrawable(android.R.drawable.btn_star_big_off);

        TransitionDrawable crossfader = new TransitionDrawable(backgrounds);

        ImageView image = (ImageView)findViewById(R.id.image);
        image.setImageDrawable(crossfader);

        crossfader.startTransition(3000);

    }
}

Затем, если вы хотите перейти к исходному изображению, вы можете вызвать

// Make sure the transition occurred
crossfader.startTransition(0);
// Reverse transition
crossfader.reverseTransition(3000);

Пожалуйста, исправьте меня, если я неправильно понял ваш вопрос.

Ответ 2

Вы должны использовать setCrossFadeEnabled propery

final TransitionDrawable briefcaseTransition = (TransitionDrawable) briefcase.getDrawable();
briefcaseTransition.setCrossFadeEnabled(true);
briefcaseTransition.startTransition(500);

Ответ 3

Может вам понравится этот - res/drawable/transition.xml:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/on" />
    <item android:drawable="@drawable/off" />
</transition>

ImageView:

<ImageButton android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" /> 

Javacode:

ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);

Если это полезно, вы можете увидеть Google-Dev:

http://developer.android.com/guide/topics/resources/drawable-resource.html

Ответ 4

A TransitionDrawable - это просто особый вид рисования. Он не нарисован сам по себе, он должен быть размещен где-нибудь (например, на фоне просмотра, на ImageView, и c) для отображения.

Если вы пытаетесь перечеркнуть два изображения, у вас есть два возможных подхода: