问题 在Android中使用矢量drawable和一组.png的图标有什么区别?


使用的利弊是什么? vector drawables 与使用一组 .png 对于Android系统图标?

如果它们是针对两种不同的东西,那是什么?


7892
2017-08-05 18:31


起源

Afaik,矢量缩放,同时保持其原始比例。有趣的问题,我想自己看一个答案。 - Vucko
在这里,在“SVG文件的注意事项”下: developer.android.com/studio/write/vector-asset-studio.html - Shaishav


答案:


png是压缩图像。它具有固定的大小,如果您尝试使其变大或变小,则需要复制或删除数据。太大或太小,看起来不正确(太大比太小更糟)。

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

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

还要注意某些图像对于矢量比其他图像效果更好 - 图标可以很好地利用矢量。照片不起作用。


7
2017-08-05 18:34





矢量drawables减小了你的apk的大小,因为你只有1个图像vs在不同的文件夹中有多个。它们也可以很好地扩展,这就是为什么你只需要创建1个矢量drawable

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


6
2017-08-05 18:36





除了缩放和空间因素,使用矢量绘图,您可以实时播放和修改绘图的矢量信息,这意味着您可以执行转换等操作(如变形图)。使用一组PNG,你有一个静态表示,就是这样,你不能使用表单,因为它们只是静态位图(除非你用它们做棘手的事情)。查看 这个路径变形的例子 为了知道你能得到什么。请记住,使用一组PNG drawables,您可以灵活地交换空间和速度,使用矢量绘图可以获得灵活性和空间,但损失速度(因为矢量转换是CPU密集型任务 - 与位图缩放相比)。


0
2017-08-05 18:36