Die neueste Version der Android-Support-Bibliothek (23.2) fügt Unterstützung für Vektor-Drawables hinzu. Es scheint dies zu tun, indem die Vektoren im Flug auf Plattformen gerastert werden, die vektorbasierte Zeichen nicht nativ unterstützen.Android-Support-Bibliothek 23.2 Vektor-Drawables sind verschwommen
Das Rasterbild scheint jedoch eine feste Größe zu haben, die eher von der Verwendung abhängt. Hier ist ein Beispiel.
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>
Layout-
<ImageView
android:layout_width="128dp"
android:layout_height="128dp"
android:id="@+id/imageView"
app:srcCompat="@drawable/vector1"/>
Der Vektor 24dp x 24dp ist. Es wird in einem ImageView mit 128 dpi x 128 dpi verwendet. Auf Plattformen, die Vektor-Zeichnungsobjekte nicht unterstützen, ist das resultierende Bild unscharf, da der Vektor mit 16 dpi gerastert und auf 128 dpi geändert wird.
Die einzige Lösung, die ich gefunden habe, ist die Erstellung eines separaten Vektors, der für jede beabsichtigte Größe gezeichnet werden kann. Es ist ziemlich ärgerlich, eine Reihe von Duplikaten mit nur den Höhen- und Breitenänderungen zu erzeugen. Das löst das Problem nicht, wenn Sie möchten, dass das Zeichen auf fill_parent oder dynamisch auf andere Weise skaliert wird.
Um die Dimensionen Ihrer Vektorbilder in fortgeschrittenen fast zu definieren, vereitelt vollständig den Vorteil der Verwendung von Vektoren an erster Stelle.
Hat jemand eine echte Arbeit?
Dank, habe ich vergessen, generatedDensities Teil hinzufügen, und ich habe überhaupt nicht realisiert, dass Gradle die Bilder rasterisieren könnte. – Ben