Color de fondo ondulado de Android

Estoy utilizando un efecto de rizo en mi cajón de navegación. Lo he puesto así y lo he aplicado a mi ListView:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@color/black_200" /> <item android:state_pressed="true" android:color="@color/black_200"> <ripple android:color="@color/black_400" /> </item> <item android:drawable="@color/white" /> </selector> 

Quiero que el fondo de ondulación permanezca igual que el estado activado normal. Incluso cuando defino que el color es el mismo que el estado activado, se vuelve más oscuro y la burbuja de ondulación se vuelve aún más oscura. ¿Cómo puedo colorear el fondo para ser el mismo como el estado activado y la burbuja de ondulación para ser el color que le dije que sea?

5 Solutions collect form web for “Color de fondo ondulado de Android”

Puede controlar el color de RippleDrawable haciendo lo siguiente:

 RippleDrawable rippleDrawable = (RippleDrawable)view.getBackground(); // assumes bg is a RippleDrawable int[][] states = new int[][] { new int[] { android.R.attr.state_enabled} }; int[] colors = new int[] { Color.BLUE }; // sets the ripple color to blue ColorStateList colorStateList = new ColorStateList(states, colors); rippleDrawable.setColor(colorStateList); 

O, a través de XML:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#FFFF0000"> <!-- The ripple will be red --> <!-- the normal bg color will be light grey --> <item> <color android:color="#FFDDDDDD" /> </item> <!-- make sure the ripple doesn't exceed the bounds --> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

EDITAR

Después de ver la respuesta de @ i.shadrin abajo, debo admitir que es un enfoque mucho más simple (usando estilos). Si esto es una opción para usted, yo lo recomendaría.

Es mucho más fácil hacer con estilos:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="colorControlHighlight">@color/ripple_material_dark</item> ... </style> 

Agregue estas dos líneas de código dentro de su vista para dar el efecto de la ondulación.

 android:clickable="true" android:background="?attr/selectableItemBackground" 

Un ejemplo de ondulación para usar con un selector en api lvl 21 y superior

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <!-- ripple mask --> <item android:id="@+id/mask"> <color android:color="@android:color/white"/> </item> <!-- background shape or color --> <item android:drawable="@drawable/rectangle_rounded_steel_blue"/> </ripple> 

Si está utilizando el color del botón personalizado, utilice el código de abajo para efecto de ondulación. Guarde el archivo en drawable con el nombre my_ripple.xml y establezca en el fondo del botón.

  <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too`enter code here`ls="http://schemas.android.com/tools" android:color="@color/ripple_color" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="@color/ripple_color" /> </shape> </item> <item android:id="@android:id/background" android:drawable="@color/button_color" /> </ripple> 
  • Cómo utilizar RippleDrawable programaticamente en código (no xml) con Android 5.0 Lollipop?
  • No se pudo encontrar la clase 'android.graphics.drawable.RippleDrawable' Unicode issue?
  • El efecto Ripple no aparece a veces
  • Android Ripple Effect + Elevación en las vistas que no son de botón
  • Android Button Ripple en Lollipop y resaltar en pre lollipop
  • Android spinner no tiene rizado en el botón en sí, sólo sus opciones
  • Crear una ondulación dibujable sin transparencia
  • Cambiar el color FAB con efecto de ondulación
  • ¿Cómo agregar efecto de rizado a las preferencias en android?
  • ¿Cómo hacer un efecto de rizo sobre un diseño lineal, sin sobrepasar el color de fondo de sus hijos?
  • ¿Cómo hacer una ondulación circular en un botón cuando se está haciendo clic?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.