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.

  • Diseño de Android - RelativeLayout (color de fondo)
  • Cómo llamar a los colores de los recursos de forma dinámica en Android?
  • Formato y estilo de un recurso xml + asignar a textview
  • Cómo combinar conjuntos de imágenes, cadenas y enteros, en un formato fácil de mantener
  • TextView no se desplaza suavemente
  • Android hacer? Attr / selectableItemBackgroundBorderless ir más lejos?
  • Android: Cajón de navegación en múltiples actividades
  • Diseño de material de Android
  • Android cómo cambiar <item> anchura y altura
  • Crear vista sobre cardview en android
  • Todos los iconos de ActionMode Bar no se muestran en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.