在Android中处理图片的最佳方法是什么?最近在Android Lollipop中,我们提供了对SVG(可缩放矢量图形)概念的支持。在支持所有分辨率的情况下,使用图片的最佳方法是PNG(将图片放置在特定的drawable资源中)还是SVG(文件大小小且压缩效果好,可以在不失去清晰度的情况下缩放到任何大小(除非非常微小))。
在Android中处理图片的最佳方法是什么?最近在Android Lollipop中,我们提供了对SVG(可缩放矢量图形)概念的支持。在支持所有分辨率的情况下,使用图片的最佳方法是PNG(将图片放置在特定的drawable资源中)还是SVG(文件大小小且压缩效果好,可以在不失去清晰度的情况下缩放到任何大小(除非非常微小))。
Lollipop(API 21)不支持SVG。它通过VectorDrawable类支持SVG路径绘图功能的一个子集。该类目前不受appcompat支持,因此仅在API 21上可用。
对于旧平台仍需要PNG图像,因此理想的工作流程是拥有基于矢量的源图像,您可以将其导出为各种DPI桶的PNG,并使用像svg2android这样的项目将其转换为API 21设备的VectorDrawable格式。
VectorDrawable
支持与SVG路径数据(d
属性)相同格式的android:pathData
。 - alanv//For Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
//For Gradle Plugin 1.5 or below
android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag notifies aapt to keep the attribute IDs around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Lollipop无法处理SVG文件,除非使用第三方库。
我找到的最佳解决方案是与SVG to VectorDrawable Converter一起使用BetterVectorDrawable库。
BetterVectorDrawable是Android 4.0+的VectorDrawable实现,具有在Android 5.0+上可配置的回退行为。
SVG to VectorDrawable Converter是将SVG图像批量转换为Android VectorDrawable XML资源文件的转换器。在线版本
链接指向自述文件,提供了如何使用库和转换器的足够信息。
或者SVG(小文件大小压缩得很好,可以按任意尺寸缩放而不失真)
。 - Phantômaxx