Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Drop Shadow en la vista

He hecho una extensa búsqueda de ejemplos de código sobre esto pero no puedo encontrar nada.

En particular, estoy buscando para agregar una sombra a un png dibujable que estoy utilizando en un ImageView. Este png dibujable es un rect redondeado con esquinas transparentes.

  • Retrolambda: Lint se bloquea al usar expresiones lambda con retrolambda
  • ¿No se pueden iniciar los proyectos de la biblioteca de Android?
  • Android cómo cambiar <item> anchura y altura
  • Android comprobar disponibilidad GPS en el dispositivo
  • ¿Cómo configuro mis repositorios Git para el desarrollo de Android en Eclipse?
  • ¿Cómo comprobar si un radiobutton está marcado en un radiogroup en Android?
  • ¿Puede alguien proporcionar un ejemplo de código de cómo agregar una sombra de caída decente a una vista ya sea en código o XML?

  • Geolocalización, servicio y notificaciones locales
  • ¿Qué hace ciertas clases de android "debe-mantener"?
  • Inhabilitar la visualización de la ventana de ejecución en IntelliJ
  • Error 12501 de autenticación con inicio de sesión de Google
  • Informes de la aplicación StorageServiceAccountSample "Implementación de KeyStore JKS no encontrada"
  • ¿Cuándo se produce SurfaceDestroyed ()
  • 5 Solutions collect form web for “Android Drop Shadow en la vista”

    Podrías usar una combinación de Bitmap.extractAlpha y BlurMaskFilter para crear manualmente una sombra para cualquier imagen que necesites mostrar, pero eso solo funcionaría si tu imagen solo se carga / se muestra de vez en cuando, ya que el proceso es caro.

    Pseudo-código (incluso podría compilar!):

    BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER); Paint shadowPaint = new Paint(); shadowPaint.setMaskFilter(blurFilter); int[] offsetXY = new int[2]; Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY); /* Might need to convert shadowImage from 8-bit to ARGB here, can't remember. */ Canvas c = new Canvas(shadowImage); c.drawBitmap(originalBitmap, offsetXY[0], offsetXY[1], null); 

    Luego ponga shadowImage en su ImageView. Si esta imagen nunca cambia pero se muestra mucho, podría crearla y almacenarla en caché en onCreate para omitir el procesamiento de imágenes caro.

    Incluso si eso no funciona como es, debe ser suficiente para que usted va en la dirección correcta.

    Para el uso de la sombra de gota debajo del código

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#ffffff" android:centerColor="#d3d7cf" android:endColor="#2e3436" android:angle="90" /> </shape> 

    Utilizar sobre dibujable para un fondo de una vista

     <View android:id="@+id/divider" android:background="@drawable/black_white_gradient" android:layout_width="match_parent" android:layout_height="10sp" android:layout_below="@+id/buildingsList"/> 

    Esto me ayudó a obtener la sombra de trabajo por lo que quería compartir el código de trabajo:

     private Bitmap createShadowBitmap(Bitmap originalBitmap) { BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER); Paint shadowPaint = new Paint(); shadowPaint.setMaskFilter(blurFilter); int[] offsetXY = new int[2]; Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY); /* Need to convert shadowImage from 8-bit to ARGB here. */ Bitmap shadowImage32 = shadowImage.copy(Bitmap.Config.ARGB_8888, true); Canvas c = new Canvas(shadowImage32); c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null); return shadowImage32; } 

    Para API 21 (5.0) + add android:elevation="4dp" o android:translationZ="4dp" para ver la descripción. Documentación

    Atributo de elevación

    Siempre use la sombra transparente de tal manera que puedan adherirse a cualquier color.

    shadow.xml

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#002e3436" android:endColor="#992e3436" android:angle="90" /> </shape> 

    Y en la vista

     <View android:id="@+id/divider" android:background="@drawable/shadow" android:layout_width="match_parent" android:layout_height="5dp"/> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.