viewportwidth/height 对 Android drawables 有什么影响?

86

我有一个从SVG资源导入的矢量图形。有时,我需要调整其大小。通常,我会更新宽度和高度。但是我无法弄清楚viewportwidth和height也会影响SVG的方式。更改这些尺寸似乎会将SVG推出可见区域。

这些测量单位代表什么?它们分别与宽度和高度有什么关系?谷歌的文档(通常)非常不足。能否请有人详细解释一下?


1
VectorDrawable不是SVG可绘制对象,它是一种不同的格式。 - Christian
4个回答

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

因此,想象一下您的形状是一个宽100、高100的矩形。您的viewportWidthviewPortHeight通常应该都设置为100,这样Android知道底层形状的尺寸。

widthheight属性告诉Android VectorDrawable的默认("本质")渲染大小应该是多少。您可以将其视为PNG或GIF(或SVG)的宽度和高度。

因此,您的VectorDrawable的内容可以在100x100的区域内定义。但如果您的宽度和高度为24x24,则内容将从100x100缩小到24x24。

这就是为什么调整viewportWidthviewPortHeight会影响VectorDrawable的原因。例如,如果将它们更改为50x50,您将最终得到一个角落缩小到24x24而不是整个形状。


2
另外需要注意的是,不要调整宽度和高度,因为这会在更新图形时增加更多的工作量。尝试在视图中定义大小,而不是在图形中定义。 - Warpzit
2
这是很多话,实际上并没有解释任何东西。视口就像您可以通过它查看SVG的窗口,如果SVG大于窗口,则您将无法看到整个SVG。 - toby yeats

33
假设画布内的苹果是您的主要矢量可绘制对象。然后,hw 分别表示画布的高度和宽度。因此,最终的 hw 将成为您的可绘制对象的 viewportHeightviewportWidth。请参考以下示意图:enter image description here

42
漂亮的画 :) - geggiamarti
1
我还是有些不明白:在这个示意图中,widthviewportWidth 是相同的(都是 w)。那么为什么要有两个变量保存同样的值呢? - SMBiggs
4
@SMBiggs 这里的“Width”将是“Apple”的宽度,“ViewportWidth”将是“Canvas”的宽度。 - Gk Mohammad Emon
2
这是错误的,画布大小应该与SVG相同。视口宽度和高度就像您查看它的窗口一样,窗口可以相对靠近或远离并位于SVG图像的不同部分,因此您可能根本看不到图像。 - toby yeats

23

Viewportwidth/Viewportheight是SVG路径画布的尺寸,而宽度和高度是整个可绘制区域的实际内在尺寸。


4

简单来说,viewportWidth 就像框架的宽度,而 width 则是该框架内部图片的宽度。


2
不完全正确。viewPortWidth是框架绘图坐标系的宽度。框架的实际宽度是width - Emil S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接