Cómo crear efecto de rizo en un diseño sencillo

¿Cómo puedo tener un efecto de ondulación en un diseño lineal / relativo simple al tocar el diseño?

He intentado establecer el fondo de un diseño a algo como:

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

Sin embargo, sólo estoy viendo un fondo blanco liso y ningún efecto de rizado al tocar el diseño. ¿Qué estoy haciendo mal?

Editar:

Para referencia, aquí está mi archivo xml de diseño:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="250dp" android:layout_height="250dp" android:background="@drawable/test" android:clickable="true"> </RelativeLayout> 

Establezca estas propiedades en su diseño:

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

Usted no tiene que definir una ondulación dibujable.

Estoy añadiendo esto además de la respuesta de Igor Ganapolsky en caso de que alguien quiere tener un diseño con diferentes colores y también tienen un efecto de rizo. Simplemente crear un efecto de rizo en drawables como este:

Ripple.xml

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="@color/rippleColor" tools:targetApi="lollipop"> <!-- ripple effect color --> <item android:id="@android:id/background"> <shape android:shape="rectangle"> <solid android:color="@color/backgroundColor" /> <!-- background color --> </shape> </item> </ripple> 

Luego darlo como fondo de su diseño o cualquier botón como Igor Ganapolsky mencionado en su respuesta.

 android:clickable="true" android:background="@drawable/ripple" 

Resulta que esto está funcionando como se pretende. El valor #40ffffff material estándar es #40ffffff . Así que en un fondo blanco, esto no se mostrará. Cambiar el color de resaltado a algo más funciona, y / o cambiar el color de fondo del objeto.

Gracias a todos (especialmente Alanv por señalarme en la dirección correcta).

Establecer android:clickable="true" en su diseño.

Ponga esto en su diseño:

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

Nota: Hay un error en la documentación del API. Funcionará sólo en API> = 23

Para todos los niveles de API , utilice esta solución

  • RippleDrawable - Mostrar efecto de rizado por programación
  • El efecto Ripple no aparece a veces
  • Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
  • Agregar los efectos de un RippleDrawable y un StateListDrawable a un RecyclerView
  • ¿Es esta la forma correcta de obtener el efecto de rizo en los dispositivos pre-piruletas?
  • Las ondulaciones no se muestran con selectableItemBackground como primer plano en un CardView con un dispositivo Android 5.0
  • Crear una ondulación dibujable sin transparencia
  • ¿Cómo hacer un efecto de rizo sobre un diseño lineal, sin sobrepasar el color de fondo de sus hijos?
  • Desactivar Ripple en ListView
  • Efecto de ondulación de Android anulado por el estado seleccionado
  • Efecto de ondulación en los elementos desplegables de Spinner de fondo de color (appcompat-v7 V21)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.