最新のAndroidサポートライブラリ(23.2)では、ベクターのドロワーブルがサポートされています。ベクタ描画可能ファイルをネイティブにサポートしていないプラットフォームで、その場でベクタをラスタライズすることで、このように見えます。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にサイズ変更されるため、結果として得られる画像はぼやけています。
私が見つけた唯一の解決策は、意図したサイズごとに別々のベクトル描画可能ファイルを作成することです。高さと幅の変更だけで、重複したベクトルの束を作成するのはかなり面倒です。また、drawableをfill_parentにしたい場合や、他の方法で動的にサイズを変更したい場合は、問題を解決できません。
ベクター画像の寸法を詳細に定義すると、はほぼになります。最初はベクターを使用する利点がありません。
誰でも真の回避策がありますか?
おかげで、私はgeneratedDensitiesの部分を追加することを怠りました、そして、私はすべてのgradleが画像をラスタライズできることに気付きませんでした。 – Ben