Android 中的图标使用矢量可绘制对象和一组 .png 有什么区别?

What is the difference between using vector drawable and a set of .png for icons in Android?

使用 vector drawables 与使用一组 .png 作为 Android 系统图标的优缺点是什么?

如果它们用于两种不同的事物,那它们是什么?

png 是压缩图像。它有一个固定的大小,如果你试图让它变大或变小,它需要复制或删除数据。太大或太小都不好看(太大比太小更糟)。

矢量可绘制对象是一系列告诉它如何绘制内容的命令。这些命令可以缩放,因此执行良好的矢量可绘制对象在 1000x1000 和 100x100 下看起来一样好。

png 的优点是易于操作且性能相对较快。矢量可绘制对象速度较慢(您必须执行命令)并且更难创建一个好的矢量对象。但它的扩展性更好。如果不需要缩放,则 png 可能就是您想要的。如果是,您可能需要一个向量。

另请注意,某些类型的图像比其他类型的矢量图像效果更好 - 图标是对矢量的一种很好的使用。照片不行。

矢量绘图减少了您的 apk 的大小,因为您只有 1 张图像而不是在不同的文件夹中有多个图像。它们也可以很好地缩放,这就是为什么您只需要创建 1 个矢量可绘制对象

向量的缺点是它们的性能有点高,所以你应该在几个地方使用它们

除了缩放和 space 因素之外,使用矢量可绘制对象,您可以实时播放和修改可绘制对象的矢量信息,这意味着您可以执行诸如转换之类的操作(例如变形图形).对于一组 PNG,您有一个静态表示,仅此而已,您不能使用这些表单,因为它们只是静态位图(除非您对它们进行一些棘手的操作)。查看 this example of path morphing 以了解您可以获得什么。请记住,使用一组 PNG 可绘制对象,您可以在灵活性和 space 之间交换速度,而使用矢量可绘制对象,您可以获得灵活性和 space,但会损失速度(因为矢量转换是 CPU 密集型任务 -in对比位图缩放-).