【问题标题】:What is the impact of viewportwidth/height on Android drawablesviewportwidth/height 对 Android drawable 有什么影响
【发布时间】:2017-05-12 05:54:01
【问题描述】:

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

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

【问题讨论】:

  • VectorDrawable 不是 SVG 可绘制对象。这是一种不同的格式。

标签: android svg android-vectordrawable


【解决方案1】:

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

所以想象你的形状是一个宽 100 高 100 的矩形。您的 viewportWidthviewPortHeight 通常都应设置为 100。这样 Android 才能知道底层形状的尺寸。

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

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

这就是为什么摆弄viewportWidthviewPortHeight 会弄乱VectorDrawable。因此,例如,如果您将它们更改为 50x50,您最终会将形状的一个角缩小为 24x24,而不是整个形状。

【讨论】:

  • 作为一个补充说明不要摆弄宽度和高度,因为当您必须更新图形时,它会给您更多的工作。尝试在视图而不是图形上定义尺寸。
【解决方案2】:

Viewportwidth/Viewportheight 是 SVG 路径的画布尺寸,而宽度/高度是整个可绘制对象的实际固有尺寸。

【讨论】:

    【解决方案3】:

    假设画布内的苹果是你的主要vector drawable。然后hw高度 和 width 分别为画布。所以最后 hw 将分别是你的drawable的viewportHeightviewportWidth

    【讨论】:

    • 漂亮的平局:)
    • 有些东西我还没有得到:在这张图中,widthviewportWidth 是相同的(都是 w)。那么让两个变量保持相同的值有什么意义呢?
    • @SMBiggs 这里的“Width”是“Apple”的宽度,“ViewportWidth”是“Canvas”的宽度
    【解决方案4】:

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

    【讨论】:

    • 不完全。 viewPortWidth 是框架的绘图坐标系的宽度。框架的实际宽度为width
    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 2018-01-15
    • 2014-10-05
    • 1970-01-01
    • 2021-06-20
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多