psicologia objetos historia ejemplos efecto economia domino con android android-5.0-lollipop rippledrawable

android - objetos - efecto domino historia



Cómo crear efecto dominó en diseño simple (8)

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

¿Cómo puedo tener un efecto dominó en un diseño lineal / relativo simple cuando toco el diseño?

Intenté establecer el fondo de un diseño en 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, solo veo un fondo blanco liso y ningún efecto de ondulación al tocar el diseño. ¿Qué estoy haciendo mal?

Editar:

Como 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 (si su diseño tiene el fondo blanco / claro predeterminado):

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

No necesita un drawable personalizado en este caso.

Sin embargo, si tu diseño tiene un fondo negro / oscuro, deberías crear tu propia ondulación dibujable como esta:

<?xml version="1.0" encoding="utf-8"?> <!-- An white rectangle ripple. --> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@android:color/white"> <item android:id="@android:id/mask" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> </shape> </item> </ripple>

Y luego configure esta ondulación dibujable como su propiedad android: background .

Puede ver muchos ejemplos de estos tipos de ondas en AOSP: http://androidxref.com/8.0.0_r4/search?q=ripple&defs=&refs=&path=&hist=&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=development&project=device&project=docs&project=external&project=frameworks&project=hardware&project=kernel&project=libcore&project=libnativehelper&project=packages&project=pdk&project=platform_testing&project=prebuilts&project=sdk&project=system&project=test&project=toolchain&project=tools


Estoy agregando esto además de la respuesta de en caso de que alguien quiera tener un diseño con diferentes colores y también tenga un efecto de onda expansiva. Simplemente crea un efecto de onda expansiva en objetos arrastrables 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, dele como fondo de su diseño o cualquier botón que mencionó en su respuesta.

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


Intento todas esas respuestas y nada me funcionó, así que resolví crear el siguiente estilo:

<style name="Button.Borderless" parent="Base.Widget.AppCompat.Button.Borderless"> <item name="android:minHeight">0dp</item> <item name="android:minWidth">0dp</item> <item name="android:layout_marginLeft">-6dp</item> <item name="android:layout_marginRight">-6dp</item> <item name="android:paddingTop">0dp</item> <item name="android:paddingBottom">0dp</item> <item name="android:paddingLeft">6dp</item> <item name="android:paddingRight">6dp</item> </style>

Y luego, apliqué a mi diseño lineal:

<LinearLayout android:id="@+id/ll_my_ripple" style="@style/Button.Borderless"> </LinearLayout>


Pon esto en tu diseño:

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

Nota: hay un error en la documentación de la API. Funcionará solo en API> = 23

Para todos los niveles de API usa esta Solution


Resulta que esto está funcionando como se esperaba. El valor estándar de Material colorControlHighlight es #40ffffff . Entonces, sobre un fondo blanco, esto no aparecerá. Cambiar el color de resaltado a otra cosa funciona, y / o cambiar el color de fondo del objeto.

Gracias a todos (especialmente a Alanv por apuntarme en la dirección correcta).


Simplemente agregue el efecto de onda predeterminado con android:background="?selectableItemBackground"

Me gusta:

<LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:background="?selectableItemBackground" android:clickable="true" > ... </LinearLayout>


Tienes que alterar el siguiente fragmento de código en cualquier widget ( TextView / Button ) y puedes implementar el efecto Ripple :

android:clickable="true" android:focusable="true" android:foreground="?attr/selectableItemBackground"

Y eres bueno para ir.