used ripples only higher current color backgroundtint attribute appcompatbutton and android android-5.0-lollipop android-imagebutton rippledrawable

ripples - rippledrawable android



Implementando el efecto Ripple fuera de ImageButton (3)

Estoy tratando de implementar el efecto de onda para ImageButton. He establecido la onda en el fondo y la imagen dibujable en el src para ello.

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

Está dando un bonito efecto de ondulación en el interior del botón. Pero también quiero que el efecto Ondulación se extienda fuera del diseño del botón. Otra forma de hacerlo es mediante:

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

Pero usa color y estilo por defecto. ¿Cómo puedo personalizarlo en cuanto a color, forma y tamaño?


Al igual que @alan menciona en su comentario. Si crea un elemento de rizado sin máscara y elementos secundarios y lo agrega como un fondo de vistas, el rizo se dibujará sobre el primer elemento primario disponible y puede extender los límites de las vistas. Esto se menciona en el documento.

<!-- An unbounded red ripple. --/> <ripple android:color="#ffff0000" />


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 esto es lo que encontré: establezca los antecedentes de 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á usando 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 ninguna capa de enmascaramiento, la ondulación no está unida y se apodera de toda la pantalla. Puedes usar la forma que quieras si no es un círculo.


Si eres perezoso como yo, utiliza la onda predeterminada y olvídate de la compatibilidad con versiones anteriores. Básicamente, existen dos tipos de ondulación de fondo que puede agregar a sus vistas:

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

Desafortunadamente, estas ondulaciones son siempre de color gris. Para modificarlos en función de su tema, vaya a su tema principal y cambie el ColorControlHighlight.

En el tema principal de tu aplicación:

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

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

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