Lollipop RippleDrawable vs Selettore per Pre - Lollipop

? Neoh @ | Original: StackOverFlow
---

Ho pulsanti con diverse draw9patch png come sfondo . Attualmente i bottoni sono controllati da selector, che sembra qualcosa di simile a questo :

<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>

Per le Lollipop Android hanno un RippleDrawable per l'effetto tocco, che più o meno così :

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight">
    <item>
    ...
    </item>
</ripple>

Per quanto riguarda il nuovo effetto tocco ripple :

1 : posso impostare draw9patch come sfondo per RippleDrawable ?

2 : Come accolgo queste due diverse XML che voglio seguire la progettazione del materiale ? Devo sborsare una nuova cartella xml / layout per il nuovo RippleDrawable ?

---

Top 5 Risposta

1alanv @

1 ) Sì . Vedere la documentazione per RippleDrawable per maggiori dettagli su come gli strati sono mescolati, ma fondamentalmente si vuole :

<?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>

O per gestire anche lo stato disattivato in modo pulito, si potrebbe desiderare :

<?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 ) Sì, è necessario inserire il vostro XML ripple in disegnabile - V21 .