テキストと背景画像を使用してAndroidでボタンを作成したいと思います。背景画像はX回ごとにクロスフェードする必要があります。
私はこれを2つの画像でTransitionDrawableを使用して動作させています。
しかし、これを2つ以上の画像で機能させることはできません。
私が持っているもの:
Javaコードでは、ボタンを作成し、背景(XMLで定義されたTransitionDrawable)を設定します。そして、私は移行を開始します。
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);
XMLでは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>
そして最後に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>
これで、アプリを起動すると砂漠の画像が表示されるという効果があります。この画像は、必要に応じてアジサイの画像にクロスフェードします。ただし、クラゲの画像は表示されません。
TransitionDrawablesのドキュメントには、2つ以上のドローアブルを指定できると記載されていますが、これを機能させることはできません。
私もXMLなしでこれを試しましたが、純粋なJAVAで試しましたが、これはまったく同じ問題を引き起こしました:-(