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:
- Efecto de ondulación de material oculto por otra vista en el diseño
- Efecto de ondulación en los elementos desplegables de Spinner de fondo de color (appcompat-v7 V21)
- Cómo utilizar RippleDrawable programaticamente en código (no xml) con Android 5.0 Lollipop?
- Touch feedback con RecyclerView y CardView
- Botón de Toggle con estilo de botón sin bordes - ¿cómo obtener el fondo en estado marcado?
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?
- ¿Cómo implementar el efecto ripple en Android KeyboardView?
- Mantenga la ondulación dentro del trazo
- Android: <include> con RippleEffect & StateListAnimator
- Ondulación y fondo sin límites de Android
- ¿Cómo manejar el efecto Ripple en 9-patch y CardView, y tener control sobre los estados del selector?
- El efecto Ripple no va por encima de ImageView
- Color de fondo ondulado de Android
- Cómo crear efecto de rizo en un diseño sencillo
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" />
- PercentRelativeLayout es más performante?
- Crashlytics (Fabric) separa las organizaciones para las variantes de aplicación (tipos de construcción, sabores de producto)