首页 文章

Android上的SVG与PNG [关闭]

提问于
浏览
15

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

3 回答

  • 18

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

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

  • 2

    您可以使用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(API级21)之前的运行Android版本设备,VectorDrawableCompat和AnimatedVectorDrawableCompat都可以通过两个新的支持库:支持向量可绘制和动画向量抽拉,分别 .

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

  • 3

    没有第三方库,Lollipop无法处理SVG文件 .

    我找到的最佳解决方案是BetterVectorDrawable lib和SVG to VectorDrawable Converter .

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

    SVG to VectorDrawable Converter 是SVG图像到Android VectorDrawable XML资源文件的批处理转换器 . Online version

    链接指向自述文件,它提供有关如何使用lib和转换器的足够信息 .

相关问题