gpt4 book ai didi

Android 支持库 23.2 矢量绘图模糊

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:08 27 4
gpt4 key购买 nike

最新版本的 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 或以其他方式动态调整大小,这并不能解决问题。

必须以高级方式定义矢量图像的尺寸几乎完全抵消了使用矢量的优势。

有人有真正的解决方法吗?

最佳答案

the vector is rasterized at 16dp and resized to 128dp

直到 23.1,Android 从提供的 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"
}
}

同步后,清理工作区并重新构建。您可以阅读更多相关信息 herehere

关于Android 支持库 23.2 矢量绘图模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756691/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com