Кроссфейдинг с использованием 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.
Переход не запускается
Любая помощь будет оценена:)
Ответы
Ответ 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) для отображения.
Если вы пытаетесь перечеркнуть два изображения, у вас есть два возможных подхода: