Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓-什么&x27;在支持最低API级别20或更低的应用程序中使用矢量绘图的优势是什么?_Android_Android Vectordrawable - Fatal编程技术网

Android 安卓-什么&x27;在支持最低API级别20或更低的应用程序中使用矢量绘图的优势是什么?

Android 安卓-什么&x27;在支持最低API级别20或更低的应用程序中使用矢量绘图的优势是什么?,android,android-vectordrawable,Android,Android Vectordrawable,我正在我的应用程序中使用矢量绘图支持库,如下所示,minSdkVersion为16 android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 根据官方文件,它提出了两种在play store上交付应用程序的方法 如果我采用第一种方法,即: 创建一个APK,该APK包含矢量绘图和相应的光栅表示。此解决方案最容易实现。 它有什么优势吗?因为它包括矢量绘图和光栅表示。它

我正在我的应用程序中使用矢量绘图支持库,如下所示,
minSdkVersion
为16

android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}
根据官方文件,它提出了两种在play store上交付应用程序的方法

如果我采用第一种方法,即: 创建一个APK,该APK包含矢量绘图和相应的光栅表示。此解决方案最容易实现。


它有什么优势吗?因为它包括矢量绘图和光栅表示。它不是在增加apk大小吗?

最重要的是:测试它

至少为您的目标sdk和min sdk获取一个模拟器,看看应用程序是否崩溃,因为Vector Drawables和支持库存在一些缺陷

为什么要使用向量? 它们可以缩放

无论您是使用预期的24dp绘制可拉伸图,还是将其放大到100dp,它看起来总是很好。如果你用位图做同样的尝试,就不会那么多了

另一件事是,它们将大大减少您的apk大小,因为它们在大多数情况下都比光栅化图像小

缺点是它们可能需要更长的时间来绘制,等等,因为解析和绘制的过程比仅仅使用位图要多。如果你保持向量的简单,这应该是可以忽略的

还了解

为什么不使用向量? 除了上面提到的(可能的)性能影响之外,您可能还需要修复一些问题,例如层列表可绘制文件中的向量,以及对这些内容的支持,但不建议这样做。此外,它也不适用于较低API版本的窗口背景,因此,如果您使用窗口背景来启动屏幕,您可能仍然希望仅使用位图



我个人尽可能使用矢量绘图工具。如果您想修改颜色或修复某些内容,它尤其有用,因为您只需修改xml,并且不必获得新的图形导出。

因此我没有太多优势,因为我的应用程序的最小API级别低于20,除非我采用两个apk的方法在play store上交付应用程序?@Amit使用SVG,你有很大的优势,不需要拆分apk。支持库提供了强大的svg支持,请确保对其进行测试。我在哪里失去了你?如果我错过了一些东西,很抱歉,但当我使用单apk方法时,支持库会生成矢量绘图和光栅图像(即PNG)。它不会使apk尺寸进一步膨胀吗?如果它不膨胀的大小,因为它会添加多个密度的.PNGs,那么我完全支持使用向量绘制。这里只需要澄清一下。@Ami您是否通过添加
vectorDrawables.useSupportLibrary=true
关闭光栅图像的生成,并且支持库将用于显示它们(在运行时,作为向量),请查看android为什么不完全支持向量?首先,SVG!=VectorDrawable(VectorDrawable使用SVG指令的有限子集)。这就是为什么我删除了
svg
标记。第二,与位图图形相比,使用矢量图形的主要优势在于前者可扩展且无锯齿。这意味着您不需要为每个屏幕密度提供不同的位图。