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.

2 Solutions collect form web for “ImageView está pixelado en dispositivos Android más antiguos”

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 detener el evento de clic a través de un fondo semitransparente?
  • cómo crear un xml utilizando xmlserializer en la aplicación android
  • Símbolo de porcentaje en strings.xml
  • Android: Obtener todas las entradas seleccionadas de MultiSelectListPreference (SharedPreferences)
  • Pantalla Android Parpadea en mostrar / ocultar barras del sistema
  • Android.view.InflateException: Archivo XML binario línea # 10: Error al inflar fragmento de clase
  • Ajuste EditText al tamaño de fuente
  • Entendiendo & lt & gt
  • Disposiciones condicionales de Android para teléfonos: tabletas
  • Android: popupBackground no funciona para menús contextuales
  • ¿Cuál es el significado de xmlns: herramientas en el diseño de Android XML?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.