android - appcompatbutton - Lollipop RippleDrawable vs Selector para Pre-Lollipop
ripple color android (1)
Tengo botones con diferentes png
draw9patch como fondo. Actualmente, los botones están controlados por un selector
que se ve más o menos así:
<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>
Para Android Lollipop tienen un RippleDrawable
para el efecto táctil, que es algo como esto:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight">
<item>
...
</item>
</ripple>
En cuanto al nuevo efecto de ondulación táctil:
1: ¿Puedo establecer draw9patch como fondo para RippleDrawable
?
2: ¿Cómo acomodo los dos xml''s anteriores? ¿Quiero seguir el diseño del material? ¿Debo RippleDrawable
una nueva carpeta / layout xml para el nuevo RippleDrawable
?
1) Sí. Consulte la documentación de RippleDrawable para obtener más detalles sobre cómo se componen las capas, pero básicamente desea:
<?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 para manejar también el estado de discapacidad de una manera limpia, es posible que desee:
<?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í, debe colocar su rizado XML en drawable-v21.