SVG与Android上的PNG

时间:2014-11-03 07:27:43

标签: android svg android-drawable android-5.0-lollipop

这是在Android中处理图片的最佳方式。最近在Android Lollipop中我们已经支持SVG(可缩放矢量图形)概念。这是处理图像以支持所有分辨率的最佳方式PNG(将图像放置在特定的可绘制资源中)或SVG(压缩得很好的小文件大小,可以扩展到任何大小而不会失去清晰度(非常小))。

2 个答案:

答案 0 :(得分:21)

Lollipop(API 21)不支持SVG。它通过VectorDrawable类支持SVG路径绘制功能的子集。 appcompat目前不支持此类,因此仅在API 21上提供。

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

答案 1 :(得分:3)

您可以使用Android支持库23.2或更高版本。在支持库VectorDrawableCompat类可以支持VectorDrawable中的Android 2.1(API 7级)和higher.For这一点,你需要改变你的build.gradle文件运行矢量资源Studio之前,在支持库向后兼容性描述。

//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"
      }
    }

为了在运行版本5.0之前的Android版本(API级别21)的设备上支持Vector Drawable和Animated Vector Drawable,可以通过两个新的支持库获得VectorDrawableCompat和AnimatedVectorDrawableCompat:support-vector-drawable和animated-vector-drawable分别。

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