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.
- Crear Circular y Transparente Drawable XML Android
- Establecer una fuente específica en un styles.xml
- Android, enviar y recibir XML a través del método HTTP POST
- Forzar la siguiente palabra a una nueva línea si la palabra es demasiado larga para la vista de texto
- Error al analizar XML: prefijo no enlazado para mapbox
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.
- Elementos de menú no mostrados en la barra de menús
- Android cómo hacer que ImageView con un minWidth tiene un borde?
- ScrollView - ¿Cómo desplazarse hacia abajo mientras se diseña el diseño en Eclipse?
- Cargar un TextView desde xml en un TextSwitcher
- ¿Debería estar lleno el archivo xml del contenido de la copia de seguridad completa o no incluirlo en todos?
- Cómo cambiar / cambiar el tamaño de EditText en el diseño de la tabla?
- ¿Cómo puedo poner utf-16 caracteres en Android cadena de recursos?
- Iniciar aplicación android desde el enlace en sms
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.
- Android: varias actividades que comparten código común
- SparseArray remove () y delete () cuál es la diferencia?