Arsenal Android – Lienzo

¿Alguna vez has querido un tipo de sombra CSS en tu proyecto de Android? ¡¿No?! Yo tampoco, pero los diseñadores continúan usándolo y la bandera de la muerte se activa cuando la aplicación no es una copia del diseño. Asi que aqui esta.

Hace mucho más que proyectar una sombra para que el nombre pueda ser inexacto. Internamente, utiliza el script de representación nativo ScriptIntrinsicBlur para que pueda desenfocar fácilmente todo el diseño como la biblioteca Blurry.

Android 5. + (API 21)

  < fr  .orandja.shadowlayout.ShadowLayout
     Android :  relleno  =   " 8DP " [19659008] Android :  layout_gravity  =   "[1945900"[19459007"] centro  "
      Android :  layout_width  = "  wrap_content  "
      Android :  layout_height  =   " wrap_content " 
      Android :  love  =   " @ drawable / round_corners " 
      app  :  shadow_radius  =   " 8 " [19659008] aplicación :  shadow_x_shift  =   " -1dp  
      aplicación :  shadow_y_shift  =   " 2DP " 
      aplicación :  shadow_downscale  = [196590000]9] " = [1965900000099]"  = [196590000]9] " ] 1  "[19659008] aplicación [19659005]: [19659005] shadow_color  = [19659007] " # 808 " [19659008] aplicación [19659005]: [19659005] shadow_with_foreground  = [19659007] "[1945450000] verdadero ] "[19659008] aplicación [19659005]: [19659005] shadow_with_color  = [19659007]"  falso  "" "19659011] aplicación :  shadow_with_dpi_scale 000" "[1965450000]]" "  verdadero  "
      aplicación :  shadow_with_css_scale  = "  verdadero  ">

    < androidx  .appcompat.widget.AppCompatTextView
         Android :  layout_width  =   " wrap_content " 
         Android :  layout_height  =   " wrap_content " 
         Android :  textColor  =   " @ color / negro " 
         android :  texto  =   " El rápido zorro marrón salta sobre el perro perezoso " 
         android :  textSize  =   " 16sp "  />

</  fr  .orandja.shadowlayout.ShadowLayout> 

Parámetros

Valor predeterminado entre paréntesis

  • shadow_radius (6f) El radio del desenfoque gaussiano en el flotador. Consulte # Reglas en la sección de reducción de escala para ver cómo funciona.
  • shadow_x_shift (0dp) Desplazamiento en el eje horizontal en dp
  • shadow_y_shift (0dp) Desplazamiento en el eje vertical en dp
  • shadow_color (# 33000000) Color de la sombra proyectada
  • shadow_downscale (1f) Escala del mapa de bits interno que crea la sombra. Cuanto más grande es la escala, más pequeño es el mapa de bits. En 2, el tamaño del mapa de bits se reduce a la mitad.
  • shadow_with_foreground (verdadero) Dibuja la vista real en la parte superior de la sombra.
  • shadow_with_color (falso) Mantenga todos los colores de la vista secundaria en el desenfoque. Junto con shadow_with_foreground en falso, se puede mostrar una imagen borrosa en la pantalla.
  • shadow_with_dpi_scale (verdadero) Cambie el tamaño del mapa de bits interno con el dpi actual del teléfono inteligente. Una vista de 100 ppp producirá un mapa de bits de 100 píxeles.
  • shadow_with_css_scale (verdadero) Cambiar el tamaño en 5/3 más. Porque el desenfoque CSS CSS estándar es la mitad del tamaño del desenfoque real.

Limitaciones

La implementación predeterminada del desenfoque gaussiano de Android ( ScriptIntrinsicBlur script de representación) está limitada a un máximo de 25 píxeles. Para contrarrestar esto, el diseño cambia el tamaño de la representación real de la vista dentro de un mapa de bits (ALPHA_8 o RGBA con shadow_with_color a verdadero). Así que difumínalo. Luego dibuja el desenfoque dentro del lienzo. Luego rediseña la vista en el lienzo. (En realidad shadow_with_foreground ) Dibuje la vista dos veces para que pueda ser realmente costosa.

El rayo puede significar más cosas dependiendo de las configuraciones.

Reglas de reducción de escala

Cuando no se reduce, se aplica lo siguiente:

  < fr  .orandja.shadowlayout.ShadowLayout
     aplicación :  shadow_radius  =   " 3f " [19659008] aplicación :  shadow_downscale  = [1965900007] ""  " ] 1  "[19659008] aplicación [19659005]: [19659005] shadow_with_dpi_scale  = [19659007]"  falso  "[19659008] aplicación [19659005]: [19659005] shadow_with_css_c_   " falso "  /> 

El mapa de bits interno tiene las mismas dimensiones que la vista. El radio es el número de píxeles borrados alrededor. Con ppp alto, el efecto será difícil. Sin embargo, en algunos casos, puede ser útil tener un desenfoque agradable a expensas de más memoria. El rango máximo es de 25 píxeles. El parámetro shadow_downscale multiplica el radio máximo por su valor. Entonces, en shadow_downscale = "2.5" el radio máximo aumenta a 62.5f.

Cuando la aplicación : shadow_with_dpi_scale = "true" : Reduzca el mapa de bits interno de los ppp actuales del teléfono inteligente. Una vista de 100 ppp producirá un mapa de bits de 100 px. El rayo significa dp . Se desvanece hasta 25dp.

Cuando aplicación: shadow_with_css_scale = "true" : Como dpi, agregará una reducción de escala de 5/3 para imitar el desenfoque de sombra CSS.

dibuja todo el diseño, puede proyectar una sombra de cualquier cosa. Texto similar:

  < fr  .orandja.shadowlayout.ShadowLayout
         Android :  relleno  =   " 8DP " [19659060]
          Android :  layout_gravity  =   "
"
"
"
" ] centro " Android : layout_width = " wrap_content " Android : layout_height = " wrap_content " aplicación : shadow_radius = " 1 " [19659060] aplicación : shadow_x_shift = [196590000]00] = [196590000]] ] 1DP "[19659060] aplicación : shadow_y_shift = " 2DP "[19659060] aplicación : shadow_downscale " 1 " [19659060] aplicación : shadow_color = " # AA000000 " [19659060] aplicación : [19659005] shadow_with_foreground = " verdadero " aplicación : shadow_with_color = " verdadero " aplicación : shadow_with_css_scale = " falso " aplicación : shadow_with_dpi_scale = " verdadero " > < androidx .appcompat.widget.AppCompatTextView Android : layout_width = " wrap_content " Android : layout_height = " wrap_content " Android : textColor = " # 808 " [19659060] android : texto = "[ El veloz zorro marrón salta sobre el perro perezoso " android : textSize = " 16sp " /> </ fr .orandja.shadowlayout.ShadowLayout>

Dado que shadow_with_color es verdadero, la sombra dibujada es del mismo color que el texto renderizado. El parámetro de color solo afecta al alfa.

.

Compruebe también

La actualización de CameraX hace que las cámaras duales simultáneas sean aún más fáciles

Publicado por Donovan McMurray – Ingeniero de relaciones con desarrolladores CámaraXLa biblioteca de cámaras Jetpack …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *