最新版本的 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"/>
矢量为 24dp x 24dp。它用于 128dp x 128dp 的 ImageView。在不支持矢量绘图的平台上,生成的图像是模糊的,因为矢量在 16dp 时被光栅化并调整为 128dp。
我发现的唯一解决方案是为每个预期大小创建一个单独的矢量可绘制对象。创建一堆只有高度和宽度变化的重复向量非常烦人。如果您希望可绘制对象为 fill_parent 或以其他方式动态调整大小,这并不能解决问题。
必须预先定义矢量图像的尺寸几乎完全破坏了首先使用矢量的好处。
有没有人有真正的解决方法?