【发布时间】:2016-11-29 12:15:30
【问题描述】:
我们开始在我们的 Android 应用程序中使用矢量绘图。 我已阅读有关在 Android 应用程序中使用光栅图像时遇到的性能问题。
谁能解释出现性能问题的原因?
可以在应用程序中使用大量矢量绘图吗?
提前致谢!!
【问题讨论】:
标签: android image performance android-vectordrawable rasterizing
我们开始在我们的 Android 应用程序中使用矢量绘图。 我已阅读有关在 Android 应用程序中使用光栅图像时遇到的性能问题。
谁能解释出现性能问题的原因?
可以在应用程序中使用大量矢量绘图吗?
提前致谢!!
【问题讨论】:
标签: android image performance android-vectordrawable rasterizing
这并不是真正的 android 特定的。它更多地与不同的图像格式有关。光栅图像具有“固定”大小,因为它始终由相同数量的像素组成,这是文件大小(以及加载后的内存占用)的主要因素之一。这也会影响您转换图像的能力。
如果要缩小光栅图像,则必须删除像素,这必然是一种有损变换(即使较小的尺寸使得很难或不可能注意到丢失的数据)。要放大图像,您必须插入像素:添加原始图像中不存在的数据,这意味着图像将开始像素化。
另一方面,对于矢量图像,存储的数据不是以像素为单位的。相反,它存储指示计算机如何绘制图像的“路径”。这些路径与大小无关,这意味着可以增加或减小其大小不会丢失数据或图像质量。由于大小无关紧要,只有保存路径(和其他数据)所需的数据存储在矢量图像文件中。这意味着该文件(通常)比等效的光栅图像小得多,因此在加载时占用的内存更少。
使用矢量意味着您的应用占用更少的内存,并且更容易适应不同的屏幕尺寸,因为 android 可以缩小/扩展您的图形以适应而不损失任何质量。
【讨论】:
光栅图形具有更高的复杂性来支持无法轻松转换矢量(如形状)的图像。光栅图形背后的技术是使用像素,而不像矢量使用线,因为我们知道 Android 中的路径。
这样光栅图像就有更多代表像素的路径元素。 Android 使用这些元素生成图像。尝试生成复杂矢量而不是加载给定的位图时需要更多时间。
据我所知,您不应该能够在 Android 中使用光栅。它只支持向量。
祝你好运
埃姆雷
【讨论】: