SVG与Android上的PNG

sra*_*ara 24 svg android android-drawable android-5.0-lollipop

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

ala*_*anv 22

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

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

  • Android支持库23.2为前Lollipop带来了可扩展的图形. (3认同)
  • 你不能只将`.svg`文件放到资源目录中并将其作为drawable引用,但``VectorDrawable`确实支持`android:pathData`的相同格式作为SVG路径数据(`d`)属性. (2认同)

Abh*_*shi 6

您可以使用 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"
      }
    }
Run Code Online (Sandbox Code Playgroud)

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

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