矢量图SVG的使用

2018-12-16  本文已影响143人  Aisen

矢量图SVG的简介


SVG是万维网联盟 (W3C) 制定的一个基于 XML 的开放式标准,在Android Studio中,可以做为图片资源导入项目。

使用矢量图SVG的好处:

可以减小 APK 的尺寸,因为可以针对不同屏幕密度调整同一文件的大小,而不会降低图像质量。

矢量图SVG在Android中的兼容性:

在Android 5.0 (API 21) 及更高版本,已经支持SVG。而Android 4.4(API 20)及更低版本不支持矢量图,Android Studio可在构建时针对每种屏幕密度将矢量图转换为不同大小的PNG图。

矢量图SVG的使用


使用的过程主要是导入SVG文件

1、在Android Studio中,右键src/main/res文件夹,New > Vector Asset

2、在Asset Sutdio弹窗中,在Asset Type选择Local file,在Path中选择要导入SVG文件的路径。其他默认不修改,然后点击Next。

image.png

3、可以选择更改资源目录,默认在main中,点击Finish。定义矢量图的 XML 文件添加到项目的 app/src/main/res/drawable/ 文件夹中。可以在布局文件像引用PNG图一样,引用这些导入的矢量图资源。

矢量图SVG的注意点


1、在构建项目时,默认情况下,如果最低API级别为 Android 4.4(API 级别 20)及更低版本,则Android Studio将自动生成PNG文件,用于低版本的兼容性。可以在app/build/generated/res/pngs/debug/文件夹中查看生成的 PNG 和 XML 文件。

2、在上面的情况下,如果不希望自动生动PNG图(PNG图会占用APK体积),那么可以使用支持库功能,兼容在低版本使用SVG资源。

在app model的build.gradle文件中添加一条声明:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.2.0'
}

支持库的版本需要23.2或更高版本。

这时候,无论最低API级别是多少,Android Studio都不会自动生成PNG图,统一使用矢量图。

使用过程,还需要注意以下两点:

(1)android:src属性

在布局文件中,如果需要引用矢量图资源,则不能使用android:src属性(AS会提示错误),对应改成app:srcCompat属性。

(2)android:background属性

在布局文件中,不能使用android:background属性引用矢量图资源,作为背景图(在Android 4.4及更低版本会报崩溃)。

这时候需要在代码中,使用VectorDrawableCompat.create,动态添加背景图

mRootView.setBackground(VectorDrawableCompat.create(getResources(), R.drawable.ic_stat_notify_dfu, getActivity().getTheme()));

参考

Android官方指导 Add multi-density vector graphics

上一篇下一篇

猜你喜欢

热点阅读