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.
- Cambiar el color del texto del elemento de menú en el cajón de navegación
- Permitir que TextView esté fuera de la pantalla
- El servidor no pudo procesar su solicitud. El valor no puede ser nulo: análisis de jabón
- Actividad de configuración botón Arriba
- CardCornerRadius muestra error
En mi Nexus 5 (Android 6), el icono de escalas hermosa y es muy fuerte:
En una nota 2 (Android 4.4), sin embargo, el icono obtiene realmente pixelado y feo:
¿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.
- Android | SQLLite: Actualización de base de datos pre-creada sin utilizar SQLiteOpenHelper
- Adaptador de llamada de reconocimiento de voz de Android
- Alinear texto en el centro - Spinner
- Z-index en android?
- GUIs basadas en XML y rendimiento
- Ripple dibujable en xml no funciona
- ¿Cuándo usar getSharedPreferences vs savedInstanceState?
- Analizar archivo XML local en Android
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.
- Android: varias actividades que comparten código común
- SparseArray remove () y delete () cuál es la diferencia?