cómo establecer sombra a una vista en Android?

Quiero saber cómo agregar una capa de sombra a cualquier vista general en Android. por ejemplo: supongamos que tengo un diseño xml, que muestra algo como esto ..

 <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" <Button.... ...  

Ahora, cuando se muestra, quiero tener una sombra a su alrededor.

Hay un truco simple, usando dos vistas que forman la sombra.

               

Espero que esto ayude.

La mejor manera de crear una sombra es usar una imagen de 9patch como fondo de la vista (o un ViewGroup que envuelve la vista).

El primer paso es crear una imagen png con una sombra a su alrededor. Usé Photoshop para crear una imagen de este tipo. Es realmente simple.

  • Crea una nueva imagen con Photoshop.
  • Agrega una capa y crea un cuadrado negro de 4×4.
  • Cree una sombra en la capa seleccionando la capa en el explorador de capas y haciendo clic en un botón titulado fx y eligiendo sombra paralela.
  • Exportar la imagen como png.

El siguiente paso es crear diseños de 9 parches a partir de esta imagen.

  • Abra draw9patch desde android-sdk/tools
  • Abra la imagen en draw9patch
  • Crea 4 líneas negras en los cuatro lados del cuadrado como se shadow.9.png continuación y luego guarda la imagen como shadow.9.png .

Ahora puede agregar esta sombra como fondo de las vistas a las que desea agregar la sombra. Añada shadow.9.png a res/drawables . Ahora agrégalo como fondo:

  

Hace poco escribí una publicación de blog que explica esto en detalle e incluye la imagen 9patch que uso para crear la sombra.

Asumiendo que utilizaría un diseño lineal (he considerado un diseño lineal vertical) … y tendría una vista justo debajo de su diseño lineal. Ahora, para esta vista, proporcione un color inicial y un color final. También quería obtener esta cosa, es trabajando para mí … Si necesita un efecto aún mejor, simplemente trabaje alrededor del color de inicio y fin.

activity_main

        

layout_back_bgn.xml

     

shadow.xml

      

Traté de publicar una imagen que tengo después de usar el código anterior, pero stackoverflow no me permite porque no tengo reputación … Lamento eso.

Puede usar la elevación, disponible desde el nivel 21 de la API

La elevación de una vista, representada por la propiedad Z, determina la apariencia visual de su sombra: las vistas con valores Z más altos proyectan sombras más grandes y más suaves. Las vistas con valores Z más altos ocluyen las vistas con valores Z más bajos; sin embargo, el valor Z de una vista no afecta el tamaño de la vista. Para establecer la elevación de una vista:

en una definición de diseño, use la

 android:elevation 

atributo. Para establecer la elevación de una vista en el código de una actividad, use la

 View.setElevation() 

método.

Fuente

Aquí está mi versión cursi de la solución … Esta es la modificación de la solución que se encuentra aquí

No me gustó cómo se ven las esquinas, así que las desdibujé …

                                            

enter image description here

   

Úselo justo debajo del LinearLayout

Otro método

enter image description here

crear “rounded_corner_bg.xml” en la carpeta / drawable

                

Para usar este diseño de android:background="@drawable/rounded_corner_bg"