Android上的SVG与PNG

Android上的SVG与PNG,android,svg,android-drawable,android-5.0-lollipop,Android,Svg,Android Drawable,Android 5.0 Lollipop,哪一种是安卓系统处理图像的最佳方式。最近在Android棒棒糖中,我们支持SVG(可伸缩向量图形)概念。这是处理图像以支持所有分辨率PNG(将图像放置在特定的可绘制资源中)或SVG(压缩良好的小文件大小,可扩展到任何大小而不丢失清晰度(非常小除外))的最佳方法。棒棒糖(API 21)不支持SVG。它通过类支持SVG路径绘制功能的子集。appcompat当前不支持此类,因此它仅在API 21上可用 对于较旧的平台,您仍然需要PNG图像,因此理想的工作流程是将基于矢量的源图像导出为各种DPI存储桶的

哪一种是安卓系统处理图像的最佳方式。最近在Android棒棒糖中,我们支持SVG(可伸缩向量图形)概念。这是处理图像以支持所有分辨率PNG(将图像放置在特定的可绘制资源中)或SVG(压缩良好的小文件大小,可扩展到任何大小而不丢失清晰度(非常小除外))的最佳方法。

棒棒糖(API 21)不支持SVG。它通过类支持SVG路径绘制功能的子集。appcompat当前不支持此类,因此它仅在API 21上可用


对于较旧的平台,您仍然需要PNG图像,因此理想的工作流程是将基于矢量的源图像导出为各种DPI存储桶的PNG,并使用类似项目将其转换为API 21设备的矢量绘图格式。

Lollipop无法处理没有第三方LIB的SVG文件

我找到的最好的解决方案是lib和

BetterVectorDrawable是针对Android 4.0+的VectorDrawable实现,在Android 5.0+上具有可配置的回退行为

SVG-to-VectorDrawable Converter是SVG图像到Android VectorDrawable XML资源文件的批量转换器


链接指向readmes,它提供了关于如何使用lib和转换器的足够信息。

您可以使用Android支持库23.2或更高版本。支持库中的VectorDrawableCompat类允许您在Android 2.1(API级别7)及更高版本中支持VectorDrawable。为此,您需要在运行Vector Asset Studio之前更改build.gradle文件,如支持库向后兼容性中所述

//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"
      }
    }
为了在运行Android版本5.0之前(API级别21)的设备上支持Vector Drawable和Animated Vector Drawable,VectorDrawable Compat和AnimatedVectorDrawable Compat可通过两个新的支持库获得:分别为support Vector Drawable和Animated Vector Drawable


Android Studio 1.4通过在构建时生成PNG文件,为矢量绘图引入了有限的兼容性支持。然而,vector drawable和动画vector drawable支持库提供了灵活性和广泛的兼容性——它是一个支持库,因此您可以将它与所有Android平台版本一起使用,返回到Android 2.1(API级别7+)。要将应用程序配置为使用向量支持库,请将vectorDrawables元素添加到应用程序模块中的build.gradle文件中。

您已经得到了答案:
或SVG(文件大小小,压缩效果好,可扩展到任意大小而不丢失清晰度
。在SVG中绘制复杂图像很困难。在质量上,矢量图形总是优于位图。但是,对于渲染速度而言,位图更快,除非渲染实现创建并缓存本机大小的位图-因此它非常依赖于实现当你说不支持SVG,但支持SVG路径绘制功能时,整个SVG支持中缺少了什么?你不能将
.SVG
文件放到参考资料目录中,并将其作为可绘制文件引用,但是
VectorDrawable
支持与SVG相同的
android:pathData
格式路径数据(
d
)属性。现在支持库中有了VectorDrawable支持。还是AppCompat支持?不确定:D Android支持库23.2将可缩放图形引入棒棒糖前。对于不支持vector Drawable的旧版本Android,vector Asset Studio可以在构建时将您的vector Drawable转换为不同的位图大小,以便每个屏幕的密度。