【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
文章目錄
- 一、Android 5.0 以下的矢量圖方案
- 二、矢量圖生成為 PNG 圖片
- 三、完整的 build.gradle 構建腳本
- 四、編譯效果
- 五、參考資料
一、Android 5.0 以下的矢量圖方案
Android 矢量圖參考文檔 : https://developer.android.google.cn/studio/write/vector-asset-studio
Android 中的矢量圖從 Android 5.05.05.0 ( API Lv 212121 ) 以上的版本開始支持 , 對于 Android 5.05.05.0 以下的版本 , 有兩種解決方案 ;
- ① 將矢量圖生成為 PNG 圖片 ;
- ② 使用 23.2 及以上版本的支持庫 ;
二、矢量圖生成為 PNG 圖片
矢量圖生成為 PNG 圖片 :
如果當前應用設置的最低 API 版本低于 212121 , 一般設置為 181818 ;
使用 Vector Asset Studio 生成矢量圖時 , 將矢量圖自動添加到項目中 ,
同時在 build.gradle 中 , 在 android / defaultConfig 層級下 , 配置 generatedDensities 選項 , 之后進行項目構建時 , Gradle 會創建不同分辨率的 PNG 圖片 , 這些分辨率在 generatedDensities 中指定 , ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi'] 是一個 Set 集合 , 元素是 String 字符串 ;
android {defaultConfig {generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']} }Gradle 語法參考文檔 : com.android.build.gradle.internal.dsl.ProductFlavor:generatedDensities
三、完整的 build.gradle 構建腳本
配置的核心就是在 android / defaultConfig 層級下 , 配置 generatedDensities 選項 ;
// ★ 矢量圖生成 PNG 配置 generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']完整配置文件 :
plugins {id 'com.android.application'id 'kotlin-android' }android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "kim.hsl.svg"minSdkVersion 18targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"// ★ 矢量圖生成 PNG 配置 generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'} }dependencies {implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"implementation 'androidx.core:core-ktx:1.3.2'implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }四、編譯效果
在上一篇博客 【Android 安裝包優化】Android 中使用 SVG 圖片 ( SVG 矢量圖簡介 | Android 中生成 Vector 矢量圖資源 ) 中 , 在 res/drawable 資源目錄下 , 生成了一張矢量圖 ;
在 build.gradle 中進行上述配置之后 , 編譯應用 ;
分析生成的 apk 文件 , 在 apk 的不同分辨率的資源目錄中 , 分別生成了不同分辨率的 ic_plane.png 圖片 ;
在 build.gradle 構建腳本中 , 設置了 ‘hdpi’, ‘mdpi’, ‘xhdpi’, ‘xxhdpi’, ‘xxxhdpi’ 這幾個分辨率 , 那么生成 APK 時 , 就會在對應上述 555 個分辨率對應的資源文件中生成該矢量圖對應的 PNG 位圖 ;
// ★ 矢量圖生成 PNG 配置 generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']
五、參考資料
參考文檔 :
-
添加多密度矢量圖形 SVG : https://developer.android.google.cn/studio/write/vector-asset-studio
-
縮減、混淆處理和優化應用 : https://developer.android.google.cn/studio/build/shrink-code
-
SVG 語法格式 : https://www.runoob.com/svg/svg-tutorial.html
博客資源 :
-
GitHub 項目源碼 : https://github.com/han1202012/SVG
-
下載地址 : https://download.csdn.net/download/han1202012/18503065
總結
以上是生活随笔為你收集整理的【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 安装包优化】Andro
- 下一篇: 【Android 安装包优化】Tint