gpt4 book ai didi

android - VectorDrawable 已缩放且未锐化

转载 作者:行者123 更新时间:2023-11-29 15:08:51 34 4
gpt4 key购买 nike

Android Studio 中的向量 xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0,0 0,12 13A4,4 0,0 0,16 9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z" />

结果:

enter image description here

24dp 更改为 96dp,结果:

enter image description here

Android Studio 中的菜单 xml:

...
<!-- Sperren -->
<TextView
android:id="@+id/suppress_button"
style="@style/TextAppearance.MaterialSheetFab.Sheet.Item"
android:drawableLeft="@drawable/ic_assignment_return"
android:drawableStart="@drawable/ic_assignment_return"
android:text="Sperren" />

<!-- IH-Auftrag -->
<TextView
android:id="@+id/setup_maintenance_order_button"
style="@style/TextAppearance.MaterialSheetFab.Sheet.Item"
android:drawableLeft="@drawable/ic_ih_auftraege"
android:drawableStart="@drawable/ic_ih_auftraege"
android:text="IH-Auftrag" />
...

所以我现在的问题是,如何像 svg 通常应该做的那样自动更改大小?

最佳答案

我不太确定这是您正在寻找的答案,但无论如何:

简而言之:将 ImageViewscaleType="fitXY" 一起使用并设置您想要的尺寸或创建您自己的子类并设置尺寸在 Drawable 上,如下所述。

ImageView 具有相同的矢量可绘制对象,左侧的比例类型为 fitCenter,右侧的比例类型为 fitXY:

ImageView example

问题的详细描述:

您的问题可能是因为许多 Android 组件正在使用 Drawable 实例,假设它具有静态尺寸。
这些组件试图通过调用 Drawable#getIntrinsicHeight() 获取 Drawable 的实际尺寸和 Drawable#getIntrinsicWidth() .这些方法将提供您在 VectorDrawable 资源中定义的确切数量,分别作为高度和宽度。
如果这些尺寸不符合渲染所在矩形的所需尺寸,那么(通常)这些组件在渲染 之前在 Canvas 上应用缩放 Matrix可绘制Drawable 不知道它必须渲染成不同的维度并将矢量渲染成具有您在资源中定义的维度的 Bitmap。在 Bitmap 准备好矢量内容后,它将使用缩放呈现到 Canvas 并且(毫不奇怪)它变得模糊。

并非所有组件都幸运地做到这一点,例如 ImageView 能够告诉 Drawable 它需要通过调用 [Drawable#setBounds( )]( http://developer.android.com/reference/android/graphics/drawable/Drawable.html#setBounds(int , int, int, int)), 但前提是比例类型设置为 FitXY . (我必须查看 ImageView 来源才能弄明白。)
不幸的是,这在某些情况下可能无济于事。您可以从这些 OS 组件创建自己的子类组件,并在确定正确尺寸后在 Drawable 上设置尺寸。

关于android - VectorDrawable 已缩放且未锐化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34090427/

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