studio programacion herramientas fundamentos con avanzado aplicaciones android shadow dropshadow

programacion - manual de android en pdf



Vista de Android sombra (10)

Busqué alrededor, y no pude encontrar una manera apropiada de hacer esto. Quiero tener los siguientes efectos de sombras en mis vistas:

Para ser sincero, no sé si este segundo se hace aplicando el efecto de sombra. ¿Algunas ideas?


Crea card_background.xml en la carpeta res / drawable con el siguiente código:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#BDBDBD"/> <corners android:radius="5dp"/> </shape> </item> <item android:left="0dp" android:right="0dp" android:top="0dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="#ffffff"/> <corners android:radius="5dp"/> </shape> </item> </layer-list>

A continuación, agregue el siguiente código al elemento para el que desea el diseño de la tarjeta

android:background="@drawable/card_background"

la siguiente línea define el color de la sombra de la tarjeta

<solid android:color="#BDBDBD"/>


Esto puede ser tarde, pero para aquellos que todavía están buscando una respuesta para esto, encontré un proyecto en git hub y este es el único que realmente se ajusta a mis necesidades. android-materialshadowninepatch

Simplemente agregue esta línea en su dependencia build.gradle

compile ''com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3''

aclamaciones. ¡aprobado para el creador! happycodings


Estoy usando Android Studio 0.8.6 y no pude encontrar:

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

así que encontré esto en su lugar:

android:background="@android:drawable/dialog_holo_light_frame"

y se ve así:


Si necesita que las sombras se apliquen correctamente, debe hacer lo siguiente.

Considere esta vista, definida con un fondo dibujable:

<TextView android:id="@+id/myview" ... android:elevation="2dp" android:background="@drawable/myrect" />

El fondo dibujable se define como un rectángulo con esquinas redondeadas:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#42000000" /> <corners android:radius="5dp" /> </shape>

Esta es la forma recomendada de aplicar sombras. Mira esto https://developer.android.com/training/material/shadows-clipping.html#Shadows



Use la propiedad de elevación para el efecto sombra:

<YourView ... android:elevation="3dp"/>


poniendo un fondo de @android:drawable/dialog_holo_light_frame , da sombra pero no se puede cambiar el color de fondo ni el estilo de borde, por lo que es mejor beneficiarse de la sombra del mismo, mientras se puede poner un fondo a través de la lista de capas

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--the shadow comes from here--> <item android:bottom="0dp" android:drawable="@android:drawable/dialog_holo_light_frame" android:left="0dp" android:right="0dp" android:top="0dp"> </item> <item android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp"> <!--whatever you want in the background, here i preferred solid white --> <shape android:shape="rectangle"> <solid android:color="@android:color/white" /> </shape> </item> </layer-list>

guárdelo en la carpeta shadow.xml bajo say shadow.xml

para asignarlo a una vista, en el archivo de diseño xml establece el fondo de la misma

android:background="@drawable/shadow"


usa esta forma como fondo:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:drawable/dialog_holo_light_frame"/> <item> <shape android:shape="rectangle"> <corners android:radius="1dp" /> <solid android:color="@color/gray_200" /> </shape> </item> </layer-list>


CardView te ofrece una verdadera sombra en Android 5+ y tiene una biblioteca de soporte. Simplemente envuelva su vista con eso y listo.

<android.support.v7.widget.CardView> <MyLayout> </android.support.v7.widget.CardView>

Requiere la siguiente dependencia.

dependencies { ... compile ''com.android.support:cardview-v7:21.0.+'' }


Sé que esta pregunta ya ha sido respondida, pero quiero que sepas que encontré un drawable en Android Studio que es muy similar a las fotos que tienes en la pregunta: mira esto:

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

Se parece a esto:

Espero que sea de ayuda

Editar

La opción anterior es para las versiones anteriores de Android Studio por lo que es posible que no pueda encontrarla. Para versiones más nuevas:

android:background="@android:drawable/dialog_holo_light_frame"

Además, si desea tener su propia forma personalizada, le sugiero usar un software de dibujo como Photoshop y dibujarlo.

No olvides guardarlo como .9.png archivo .9.png (ejemplo: my_background.9.png )

Lea la documentación: Dibuje el parche 9

Editar 2

Una solución de trabajo aún mejor y menos dura es usar CardView y configurar la app:cardPreventCornerOverlap="false" para evitar que las vistas se superpongan a los bordes:

<android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="2dp" app:cardElevation="2dp" app:cardPreventCornerOverlap="false" app:contentPadding="0dp"> <!-- your layout stuff here --> </android.support.v7.widget.CardView>

También asegúrese de haber incluido la última versión en build.gradle , current is

compile ''com.android.support:cardview-v7:26.0.0''