Implementar efecto de ondulación fuera de ImageButton

Estoy intentando implementar el efecto de la ondulación para ImageButton. He fijado la ondulación en fondo y la imagen dibujable en el src para él.

android:background="@drawable/myripplexml" android:src="@drawable/myimagepath" 

Su efecto de rizado dar agradable dentro de la disposición del botón. Pero quiero que el efecto Ripple se extienda fuera de la disposición del botón también. Otra forma de hacerlo es usar:

  android:background="?android:attr/selectableItemBackgroundBorderless" 

Pero utiliza color y estilo por defecto. ¿Cómo puedo personalizarlo con respecto al color, la forma y su tamaño?

Me encontré con esto y mi problema es que 'selectableItemBackgroundBorderless' crea un rectángulo, mientras que mi botón era circular. No estoy seguro de si esto responde a la pregunta original, pero aquí es lo que encontré: establecer el fondo a esto en drawable-v21

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item android:id="@android:id/mask"> <shape android:shape="oval"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

Y @null en niveles de api más bajos (asumiendo que está utilizando un selector para el botón de imagen real src). La ondulación más visible en el relleno del botón. Si no hay capa de enmascaramiento en absoluto La ondulación no está unida y una especie de toma toda la pantalla. Puedes usar cualquier forma que quieras si no es un círculo.

Si eres perezoso como yo, haz uso de la ondulación predeterminada y olvídate de la compatibilidad con versiones anteriores. Básicamente hay dos tipos de ondulación de fondo u puede agregar a las vistas de ur:

  ?android:selectableItemBackground // Ripple within view ?android:selectableItemBackgroundBorderless //Ripple outside view 

Por desgracia, estas ondulaciones son siempre de color gris. Para modificar estos basado en su tema, vaya a su tema padre y cambiar el colorControlHighlight.

En el tema principal de la aplicación:

 <item name="colorControlHighlight">#1bff3a</item> 

Este valor cambiará el color de la ondulación predeterminada.

Nota: En dispositivos por debajo de 21, la ondulación se convertirá en selectores notmal con el mismo color que ha establecido.

Al igual que @alan mencionado en su comentario. Si crea un elemento de ondulación sin máscara y elementos secundarios y lo agrega como fondo de vistas, la ondulación se dibujará en la parte superior del primer padre disponible y puede extender los límites de vistas. Esto se menciona en el documento

 <!-- An unbounded red ripple. --/> <ripple android:color="#ffff0000" /> 
  • ¿Cómo hacer una ondulación circular en un botón cuando se está haciendo clic?
  • No hay efecto de ondulación en el tacto en la vista de reciclaje
  • Cambiar el color FAB con efecto de ondulación
  • Desactivar Ripple en ListView
  • RippleDrawable máscara de color, ¿para qué sirve?
  • Cómo establecer state_selected en ripple drawable
  • Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
  • Obtenga el efecto de ondulación en RecyclerView con elementos que contengan otro color de fondo
  • RippleDrawable - Mostrar efecto de rizado por programación
  • SetBackgroundResource actúa diferente de setBackground con RippleDrawable
  • Efecto de ondulación de Android anulado por el estado seleccionado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.