Antecedentes
En la aplicación de marcador de Android, cuando comienzas a buscar algo y haces clic en el botón de flecha a la izquierda de EditText, obtienes un efecto dominó circular en él:
El problema
Intenté tenerlo también, pero obtuve uno rectangular:
<ImageButton
android:id="@+id/navButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/search_ic_back_arrow"/>
La pregunta
¿Cómo hago para que el botón tenga un efecto de onda circular al hacer clic? ¿Tengo que crear un nuevo dibujable o hay una forma incorporada para eso?
android
button
rippledrawable
desarrollador de Android
fuente
fuente
Respuestas:
Si ya tiene una imagen de fondo, aquí hay un ejemplo de una onda que parece cercana a selectableItemBackgroundBorderless:
ic_filter_state.xml:
state_pressed_ripple.xml: (opacidad establecida al 10% sobre fondo blanco) 1AFFFFFF
fuente
Si está utilizando el tema AppCompat, puede establecer el fondo de la vista como:
Esto agregará una ondulación circular en 21 y arriba y un fondo cuadrado en 21 por debajo.
fuente
android:clipChildren="false"
en los diseños para permitir que la animación se propague.Otro atributo con efecto de onda redonda, especialmente para la barra de acción:
UPD : este atributo puede cambiar el color de la ondulación:
Pero tenga en cuenta que este atributo se aplica a todos los efectos dominó predeterminados.
fuente
?
es un atajo para?attr/
Cree y establezca una ondulación dibujable como fondo. Algo como esto.
fuente
Simplemente agregue este fondo a su vista
android:background=?android:attr/actionBarItemBackground
fuente
Puede crear un dibujo de ondulación circular utilizando el
android:radius
atributo en xml.Ejemplo:
Preste atención,
your_radius
debe ser menor que el ancho y la altura de su vista. Por ejemplo: si tiene una vista con el tamaño60dp x 60dp
your_radius
debe estar cerca30dp
(ancho / 2 o alto / 2).fuente
Si desea archivos XML más genéricos, tengo dos archivos:
1) btn_ripple_background con código:
2) ripple_circuler_shape con código:
finalmente el uso:
android:foreground="@drawable/ripple_btn_background"
fuente
Tratar:
fuente
Si desea un efecto dominó que no cruce el límite del círculo, puede verificar este código. Funciona perfectamente para mí. Solo recuerde, debe ingresar id = @ android: id / mask en ripple_blue.xml
ripple_blue.xml
color.xml
fuente
solo agrega este artículo en tu
fuente
En Kotlin / Java puede hacer lo siguiente
fuente