Librería de soporte de Android 23.2 vector drawables are blurry

La versión más reciente de la Biblioteca de soporte de Android (23.2) añade soporte para dibujos vectoriales. Parece hacerlo mediante la rasterización de los vectores sobre la marcha en las plataformas que no soportan nativamente soporte vectorial.

Sin embargo, la imagen rasterizada parece ser un tamaño fijo más que dependiente del uso. He aquí un ejemplo.

Vector

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm0,3c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zm0,14.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/> </vector> 

Diseño

 <ImageView android:layout_width="128dp" android:layout_height="128dp" android:id="@+id/imageView" app:srcCompat="@drawable/vector1"/> 

El vector es 24dp x 24dp. Se utiliza en un ImageView que es 128dp x 128dp. En las plataformas que no son compatibles con elementos vectoriales, la imagen resultante queda borrosa porque el vector se rasteriza a 16dp y se redimensiona a 128dp.

La única solución que he encontrado es crear un vector separado dibujable para cada tamaño previsto. Es muy molesto crear un montón de vectores duplicados con sólo los cambios de altura y ancho. Y eso no soluciona el problema si desea que el dibujable fill_parent o dinámicamente se clasifique de alguna otra manera.

Tener que definir las dimensiones de sus imágenes vectoriales en avanzado casi completamente derrota el beneficio de usar vectores en el primer lugar.

¿Alguien tiene un verdadero trabajo alrededor?

One Solution collect form web for “Librería de soporte de Android 23.2 vector drawables are blurry”

El vector es rasterizado a 16dp y redimensionado a 128dp

Hasta 23.1 , Android estaba creando imágenes ráster a partir de VectorDrawable . Esta cosa cambió en v23.2 de la biblioteca de soporte. Este comportamiento ocurre si configura correctamente su build.gradle .

Si está utilizando el Gradle Plugin 2.0+ , agregue

 android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 

Si está utilizando 1.5.0

  android { defaultConfig { generatedDensities = [] } // This is handled for you by the 2.0+ Gradle Plugin aaptOptions { additionalParameters "--no-version-vectors" } } 

Después de sincronizar, limpiar su espacio de trabajo y construir de nuevo. Puedes leer más sobre esto aquí y aquí

  • Coracteres corrompidos o desaparecidos después de ejecutar Proguard
  • Biblioteca de soporte VectorDrawable Resources $ NotFoundException
  • Android Vector Drawable <defs> no es compatible. ¿Como arreglarlo?
  • ¿Es posible usar VectorDrawable en Botones y TextViews usando android: DrawableRight?
  • Vector de etiqueta dibujable no válido
  • AppCompatDrawableManager.get () vs VectorDrawableCompat.create ()
  • Cómo obtener un mapa de bits de VectorDrawable
  • No se puede usar la casilla de verificación en eclipse con el complemento de adt de Android
  • Recursos de VectorDrawableCompat $ NotFoundException en KitKat y más abajo
  • VectorDrawableCompat y lona giran, dibujable desaparece en 90/270 grados
  • Cargar un vector dibujable en la vista de la imagen desde la tarjeta sd
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.