2014-05-08 4 views
4

J'essaie d'utiliser TransitionDrawable afin de basculer entre les icônes de lecture/pause. Lorsque je clique sur le bouton de lecture, l'icône de lecture reste et le bouton de pause apparaît en haut de l'icône de lecture. quand je clique à nouveau l'icône de pause disparaît et le bouton de lecture est là.TansitionDrawable premier élément ne disparaît pas

le code: onClick fonctionne cette méthode

private void startOrPause() { 
    TransitionDrawable drawable = (TransitionDrawable) mPlayBtn.getDrawable(); 
    if (!isPlaying) { 
     drawable.startTransition(300); 
    } else { 
     drawable.reverseTransition(300); 
    } 

    isPlaying = !isPlaying; 

} 

XML: transition

<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/ic_play"/> 
    <item android:drawable="@drawable/ic_pause"/> 
</transition> 

ImageButton:

<ImageButton android:id="@+id/audio_layout_play_imageButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:src="@drawable/play_pause_transition" 
      android:background="@android:color/transparent" 
      android:layout_marginLeft="4dp" 
     /> 

play on top of pause after transition

Je l'ai regardé o Ver l'exemple de code android et quelques guides sur internet et tout le monde fait la même chose.

Merci pour votre aide,

Roy

+1

Faites vos images ont un fond blanc, plutôt que d'un fond transparent (comme je le soupçonne qu'ils ont actuellement), et voir si cela aide. – CommonsWare

+0

@CommonsWare Merci beaucoup pour votre réponse. cela a résolu mon problème mais j'ai décidé qu'il est assez limitatif d'avoir une couleur d'arrière-plan donc j'utilise "mButton.animate(). alpha (0); mButtons.setImageResource (R.drawable ...); mButton.animate () .alpha (1) .setStartDelay (300); – royB

Répondre

6

J'ai eu exactement le même problème, qui ne se est produit avec des images transparentes (32 bits PNG, GIF). Essayez d'utiliser setCrossFadeEnabled:

TransitionDrawable drawable = (TransitionDrawable) mPlayBtn.getDrawable(); 
drawable.setCrossFadeEnabled(true); 
+2

Ceci est également nécessaire pour tout dessinable qui a la transparence. – bonnyz

Questions connexes