Chcę utworzyć przycisk w Androidzie z tekstem i obrazem tła. Obraz tła powinien przemieszać się co X czas.Android TransitionDrawdopodobne z wieloma elementami
Mam to działa przy użyciu TransitionDrawable z 2 obrazów.
Ale nie mogę tego zrobić z więcej niż 2 obrazami.
Co mam:
W kodzie Java utworzyć przycisk i ustawić tło (co jest TransitionDrawable zdefiniowane w formacie XML). I zaczynam przejście.
final Button b = new Button(getApplicationContext());
b.setTextColor(getResources().getColor(R.color.white));
b.setText("Some text");
b.setBackgroundDrawable(getResources().getDrawable(R.drawable.tile));
StateListDrawable background = (StateListDrawable) b.getBackground();
TransitionDrawable td = (TransitionDrawable) background.getCurrent();
td.startTransition(2000);
W XML zdefiniować w tile.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#449def" />
</shape>
</item>
<item android:drawable="@drawable/transition">
<shape>
<solid
android:color="#0000ff" />
</shape>
</item>
</selector>
i wreszcie transition.xml
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/desert"/>
<item android:drawable="@drawable/hydrangeas" />
<item android:drawable="@drawable/jellyfish" />
</transition>
Teraz efekt jest, że kiedy uruchomić aplikację obraz pustyni pokazano . Ten obrazek przenosi się do obrazu hortensji tak, jak powinien. Ale obraz meduzy nigdy nie jest pokazywany.
W dokumencie dla TransitionDrawables stwierdza się, że można podać więcej niż 2 rysunki, ale nie mogę tego uruchomić.
Próbowałem też to bez XML, ale w czystej JAVA ale to dało dokładnie ten sam problem :-(
* W doc dla TransitionDrawables stwierdzono, że można podać więcej niż 2 kanału alfa * - można podać link do miejsca, gdzie to jest powiedziane? – Luksprog
http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html#TransitionDrawable (android.graphics.drawable.Drawable []) Oznacza to, że "co najmniej 2 warstwy są wymagane do tego losowania do działa poprawnie. ". Tak jak napisano w moim oryginalnym wpisie, wypróbowałem również wszystko w czystym kodzie Java (w ten sposób działając w sposób zgodny z tym konstruktorem), ale miał dokładnie ten sam problem. – Knarf
Zły wybór słów. Właśnie patrzyłem na kod 'TransitionDrawable' i tylko znika między dwoma rysunkami, każda druga warstwa jest ignorowana. – Luksprog