最新版本的Android支持库(23.2)增加了对矢量绘图的支持。它似乎是通过在本机不支持矢量绘图的平台上对矢量进行扫描来做到这一点的。
然而,光栅图像似乎是一个固定的大小,而不是依赖于使用。下面是一个例子。
向量
<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>布局
<ImageView
android:layout_width="128dp"
android:layout_height="128dp"
android:id="@+id/imageView"
app:srcCompat="@drawable/vector1"/>向量为24 dpx24 is。它被用于一个128 dpx128 an的ImageView中。在不支持矢量绘图的平台上,生成的图像是模糊的,因为矢量在16 to时被光栅化并调整为128 to。
我找到的唯一解决方案是为每个预期大小创建一个可绘制的单独向量。创建一组只改变高度和宽度的重复向量是很烦人的。如果您希望fill_parent可绘制或以其他方式动态调整大小,这并不能解决问题。
必须以高级的方式定义矢量图像的维数,这从一开始就完全违背了使用向量的好处。
周围有人有真正的工作吗?
发布于 2016-03-02 19:57:40
该矢量在16 at时被栅格化,并调整为128 at。
直到23.1,安卓还在从提供的VectorDrawable开始创建光栅图像。这种情况在支持库的v23.2中发生了变化。如果正确设置build.gradle,则会发生此行为。
如果使用的是Gradle Plugin 2.0+,请添加
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
} 如果您使用的是1.5.0
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
} 同步之后,清理工作区并重新生成。您可以阅读更多关于它的here和here。
发布于 2018-10-26 10:51:46
在XML中增加android:宽度和高度。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"在我增加尺寸之后,生成的png尺寸也增加了,图像看起来也不再模糊了。
https://stackoverflow.com/questions/35756691
复制相似问题