矢量圖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。
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()));