ImageView está pixelado en dispositivos Android más antiguos

El problema

Tengo un ImageView en mi XML así:

<ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/ic_person_add" android:alpha="0.87" /> 

El ic_person_add es el Vectoricon de diseño de material normal.

En mi Nexus 5 (Android 6), el icono de escalas hermosa y es muy fuerte:

Nexus 5

En una nota 2 (Android 4.4), sin embargo, el icono obtiene realmente pixelado y feo:

Nota 2

¿Cómo obtengo el ImageView (con un Vector como src) afilado en cada dispositivo? Preferiblemente con una única solución xml.

Ya encontré:

  • Añadiendo android:adjustViewBounds="true" -> no hizo nada
  • Las imágenes de ImageView parecen pixeladas y de baja calidad -> No se aplica al vector
  • Configuración BitmapFactory.inscaled=false -> no funciona con sólo xml y no sabía dónde poner esto en una clase personalizada de ImageView.

El verdadero problema no era el DPI de la nota 2, era su versión de Android.

El Enlace Melllvar publicó los estados:

Una vez que tenga una imagen vectorial en su res / drawable, el complemento Gradle generará automáticamente imágenes ráster PNG para API nivel 20 y inferior durante el tiempo de construcción

Así que mi dispositivo Android 6 realmente tenía un Vectorgraphic como fuente para el ImageView por lo que logró escalar hasta perfectamente. Para la Nota 2 (que se ejecuta en un sistema operativo más antiguo que Android 5), Android Studio convirtió automáticamente el Vectorgraphic en mi carpeta Drawables en un PNG.

Puede cambiar el tamaño del PNG convertido en VectorXML cambiando el

 android:height android:width 

al tamaño en dp su vectorgraphic necesita ser exhibido en pre API 20 dispositivos. Así que en mi caso (máximo de 100dp) tuve que cambiar los valores a:

 <vector android:height="100dp" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="100dp"> 

El cubo de densidad Nexus 5 es xxhdpi , mientras que el de la nota 2 (basado en esto ) es xhdpi . Esto sugiere que su mapa de bits xxhdpi tiene un tamaño adecuado (o es, al menos, en o por encima del tamaño requerido), mientras xhdpi no lo es.

Si está utilizando la conversión automática proporcionada por las versiones recientes de Android Studio, puede intentar rasterizar la imagen vectorial manualmente para ver si esto soluciona el problema.

Si está utilizando gráficos de trama, es posible que desee añadir algún elemento visual a cada variante de densidad para obtener una idea de cuál se está utilizando realmente.

  • Cómo poner un botón entre dos diseños
  • Android: quita el margen izquierdo del diseño personalizado de la barra de acciones
  • ¿Por qué no puedo definir atributos de android en el espacio de nombres predeterminado?
  • Android crea y escribe xml en un archivo
  • Cómo clasificar los componentes de Android según el tamaño de la imagen mediante XML
  • No se pueden obtener widgets de main.xml referenciados en el programa Java
  • Android xml layer-list no se muestra correctamente en algunos dispositivos
  • ¿Cómo editar el valor de un nodo de un archivo XML existente de una tarjeta SD y guardarlo de nuevo?
  • Cómo generar un entero con los métodos de TextView?
  • ¿Cómo alinear vistas en la parte inferior de la pantalla?
  • Cómo crear un proyecto de biblioteca de android en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.