viewportwidth/height 对 Android 可绘制对象有什么影响

What is the impact of viewportwidth/height on Android drawables

我有一个从 SVG 资产导入的矢量可绘制对象。有时,我必须调整尺寸。通常我更新宽度和高度。我无法解决的是视口宽度和高度如何影响 svg。似乎更改这些尺寸可以将 svg 推到可见区域内的视图之外。

这些计量单位代表什么?它分别与宽度和高度有什么关系? documentation from Google 是,(像往常一样)严重不足。有人可以详细说明吗?

Viewportwidth/Viewportheight 是 SVG 路径的 canvas 尺寸,width/height 是整个可绘制对象的实际固有尺寸。

viewportWidthviewPortHeight 定义了在其中绘制 VectorDrawable 内容的文档区域。它们相当于 SVG viewBox 的宽度和高度字段。如果您需要进一步的解释,请研究 SVG viewBox 的工作原理。

想象一下你的形状是一个长方形,宽 100,高 100。您的 viewportWidthviewPortHeight 通常都应设置为 100。这样 Android 就知道基础形状的尺寸。

widthheight 属性告诉 Android VectorDrawable 的默认 ("intrinsic") 渲染大小应该是多少。您可以将它们想象成 PNG 或 GIF(或 SVG)的宽度和高度。

因此 VectorDrawable 的内容可以定义在 100x100 的区域上。但是如果你的宽和高是24x24,内容就会从100x100缩小到24x24。

这就是摆弄 viewportWidthviewPortHeight 与 VectorDrawable 混淆的原因。因此,例如,如果将它们更改为 50x50,则最终形状的一个角将缩小为 24x24,而不是整个形状。

只是 viewportWidth 就像框架的宽度,width 就像框架内图片的宽度。

假设 canvas 中的苹果是您的主要 向量可绘制对象 。那么 hw 分别是 canvas 的 heightwidth。所以最后 hw 将分别是你的 drawable 的 viewportHeightviewportWidth