Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implementación de iconos adaptables

Los íconos adaptables mantienen una forma consistente dentro del dispositivo, pero varían de un dispositivo a otro con solo un activo de ícono proporcionado por el desarrollador. Además, los íconos admiten dos capas (primer plano y fondo) que se pueden usar para el movimiento para proporcionar deleite visual a los usuarios.

Los implementadores de dispositivos proporcionan una máscara de dispositivo que decidirá la forma de todos los íconos en un dispositivo. Este icono se utilizará en cualquier superficie de la interfaz de usuario del sistema que utilice iconos de iniciador (por ejemplo, iniciador, descripción general, configuración y hoja para compartir).

Ejemplos y fuente

Ejemplos de código:

  • platform/development/samples/AdaptiveIconSample/

Documentación para desarrolladores:

Código fuente:

  • platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java

Implementación

Para cambiar la forma del icono en una plataforma, superponga una cadena en framework/base/core/res/res/values/config.xml , de la siguiente manera:

<!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. -->
    <string name="config_icon_mask" translatable="false">"M50,0L100,0 100,100 0,100 0,0z"</string>

El formato y la sintaxis de la cadena siguen el estándar W3, SVG para la definición de la ruta . Este formato para PathData también es compatible con los elementos de diseño vectoriales de Android.

Esta ruta debe ser convexa y respetar la zona segura (66/71 = 91%) dentro de los límites de la vista. Esto se aplica en una de las pruebas CTS.

Si decide utilizar un círculo como máscara de plataforma, asegúrese de superponer también config_useRoundIcon = true. De lo contrario, establezca este valor de configuración en falso o no especifique este valor de configuración.

API de icono adaptable

La API para la clase AdaptiveIconDrawable se muestra a continuación:

package  android.graphics.drawable;
    public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback {
    method public Drawable getBackground();
    method public Drawable getForeground();
    method public Path getIconMask();
    method public Region getSafeZone();
    method public float getExtraInsetFraction();
    method public int getOpacity();
    method public void invalidateDrawable(Drawable);
    method public void scheduleDrawable(Drawable, Runnable, long);
    method public void setAlpha(int);
    method public void setColorFilter(ColorFilter);
    method public void setOpacity(int);
    method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
    }
public class Icon extends Parceleable {
    method public Bitmap createWithAdaptiveBitmap();
    }

Implementación de referencia

No es necesario hacer nada para representar los iconos adaptativos estáticos en cualquiera de las superficies de la interfaz de usuario del sistema. Cuando PackageManager devuelve un elemento de diseño, simplemente vincúlelo a un ImageView. Así es como los iconos ya se renderizan en las plataformas Pre-O.

Con respecto a la representación del efecto de movimiento dinámico, Launcher3 (plataforma / paquetes / aplicaciones / Launcher3) tendrá una implementación de referencia que muestra cómo lograr el efecto en O-MR1.

Validación

Para validar la implementación, después de anular la máscara de su agrado, vea si los iconos se representan correctamente en Launcher3, Configuración, Descripción general y Configuración. También puede ejecutar AdaptiveIconDrawableTest.java y AdaptiveIconMaskTest.java dentro de los gráficos CTS TestCase para probar la implementación.

Puede encontrar un caso de prueba manual recomendado en: platform / development / samples / AdaptiveIconSample /.

Problemas conocidos

Los problemas conocidos incluyen los siguientes:

  • Iconos borrosos, dependiendo de cómo esté definida la ruta de la máscara.
  • Iconos de acceso directo Icon.createWithAdaptiveBitmap() si los desarrolladores de aplicaciones no utilizan el método Icon.createWithAdaptiveBitmap() o no utilizan este método correctamente. Para que este método funcione correctamente, el mapa de bits pasado debe rellenarse un 25% en los cuatro lados.

Estos problemas se pueden abordar de la siguiente manera:

  • La máscara debe definirse en el sistema de coordenadas [0, 100] x [0, 100].
  • Asegúrese de que las imágenes utilizadas para los íconos adaptables (íconos de inicio, accesos directos) tengan suficiente relleno (25%) en los cuatro lados.