このSO の質問で誰かが行った方法で、アニメーション化されたトグル ボタンを作成しました。正常に動作しますが、レイアウトが最初に作成されたときに、トグル ボタンの背景が animationdrawable の最初のフレーム (最後のフレームである必要があります) になるという、少し問題があります。初めてタップすると、正しく動作します。
編集: toggle_pause_anim.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" >
<item
android:drawable="@drawable/pause1"
android:duration="50"/>
...
<item
android:drawable="@drawable/pause20"
android:duration="50"/>
</animation-list>
toggle_pause_anim.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" >
<item
android:drawable="@drawable/play1"
android:duration="50"/>
...
<item
android:drawable="@drawable/pause20"
android:duration="50"/>
</animation-list>
toggle_play_pause_anim.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/toggle_play_anim" android:state_checked="false"/>
<item android:drawable="@drawable/toggle_pause_anim" android:state_checked="true"/>
</selector>
toggle_play_pause_bg:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+android:id/background"
android:drawable="@android:color/transparent"/>
<item
android:id="@+android:id/toggle"
android:drawable="@drawable/toggle_play_pause_anim"/>
</layer-list>
ToggleButton
私のlayout.xmlで:
<ToggleButton
android:id="@+id/play_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/toggle_play_pause_bg"
android:textOff=""
android:textOn="" />
いいえ、作成時にチェックを false に設定します。
これが私が得ているもののビデオです。問題は、レイアウトが最初にロードされたときです (アイコンは一時停止ではなく、再生する必要があります)。ご覧のとおり、最初の変更後、その後は正しく機能します。