2015-12-23 4 views
1

J'ai créé un bouton à bascule animé comme quelqu'un l'a fait en this SO question. Cela fonctionne bien mais il y a un petit problème, quand la mise en page est créée, mon arrière-plan du bouton bascule est la première image de l'animation retirable (ça devrait être sa dernière image). Une fois que je l'ai tapé pour la première fois, cela fonctionne correctement.comment mettre en place un bouton à bascule animé en android

EDIT: 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 dans mon 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="" /> 

Et non, je ne vérifié ensemble à faux sur créer.

Here Est une vidéo de ce que je reçois. Le problème est lorsque la mise en page est d'abord chargée (l'icône doit être en lecture, pas en pause). Comme vous le voyez, après le premier changement, cela fonctionne correctement par la suite.

Répondre

1

Eh bien, puisque personne n'a répondu, j'ai cherché et cherché et enfin trouver la solution.

est donc ici l'astuce:

ToggleButton dans mon layout.xml:

<ToggleButton 
    android:id="@+id/play_pause" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/toggle_play_pause_anim" 
    android:textOff="" 
    android:textOn="" /> 

Il est avéré que drawable couche n'a pas été nécessaire, et dans le code java, Iadded ces lignes onCreate méthode:

toggleBtn = (ToggleButton) findViewById(R.id.play_pause); 
StateListDrawable stateListDrawable = (StateListDrawable) toggleBtn.getBackground(); 
AnimationDrawable animationDrawable = (AnimationDrawable) stateListDrawable.getCurrent(); 
animationDrawable.selectDrawable(animationDrawable.getNumberOfFrames() - 1); 

Maintenant, il charge et fonctionne très bien.

0

Veuillez ajouter votre code, mais il semble que vous deviez utiliser setChecked (true) ou setChecked (false) dans votre méthode d'activité onCreate.

+0

J'ai modifié ma question, il y a mon code – MamadTell