Lollipop RippleDrawable vs Sélecteur pour Pré-Lollipop

J'ai des boutons avec différents motifs draw9patch en tant que fond. Actuellement, les boutons sont contrôlés par un selector qui ressemble à ceci:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/pressed" android:state_pressed="true"/> <item android:drawable="@drawable/disabled" android:state_enabled="false"/> <item android:drawable="@drawable/focused" android:state_focused="true"/> <item android:drawable="@drawable/default"/> </selector> 

Pour Android Lollipop, ils disposent d'un RippleDrawable pour l'effet tactile, qui se présente comme suit:

  • Le pouce de recherche personnalisé n'est pas transparent sur Lollipop API21
  • Seek Bar thumb non transparent dans Android 5.0 API 21 Lollipop
  • Comment faire une ondulation circulaire sur un bouton quand on clique?
  • Bug lors de la liste des fichiers avec Android Storage Access framework sur Lollipop
  • Comment changer la couleur de la barre d'état pour correspondre à l'application dans Lollipop?
  • Couleur de fond ondulé Android
  •  <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item> ... </item> </ripple> 

    En ce qui concerne le nouvel effet d'ondulation tactile:

    1: Puis-je définir draw9patch comme arrière-plan pour RippleDrawable ?

    2: Comment puis-je satisfaire les deux xml ci-dessus que je veux suivre La conception du matériau? Dois-je RippleDrawable un nouveau dossier / mise en page xml pour le nouveau RippleDrawable ?

    One Solution collect form web for “Lollipop RippleDrawable vs Sélecteur pour Pré-Lollipop”

    1) Oui. Consultez la documentation de RippleDrawable pour plus de détails sur la façon dont les couches sont composées, mais vous voulez fondamentalement:

     <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:attr/colorControlHighlight"> <item android:drawable="@drawable/yourninepatch" /> </ripple> 

    Ou pour gérer également l'état désactivé d'une manière propre, vous voudrez peut-être:

     <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:attr/colorControlHighlight"> <item> <selector> <item android:state_enabled="false"> <nine-patch android:src="@drawable/yourninepatch" android:alpha="?android:attr/disabledAlpha" /> </item> <item> <nine-patch android:src="@drawable/yourninepatch" /> </item> </selector> </item> </ripple> 

    2) Oui, vous devez placer votre ripple XML dans drawable-v21.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.