APK优化(一)之SVG--------------解决大量的套
2019-02-27 本文已影响24人
晓晓桑
一. SVG(Scalable Vector Graphics)--------------解决大量的套图问题
可缩放矢量图形,SVG不会像位图一样因为缩放而让图片质量下降。
优点:节约空间与内存,常用于简单小图标
SVG 使用 XML 格式定义图形,标准svg根节点为<svg>,在Android中通过Vector实现对svg的支持,根节点为<vector>。获得一张svg需要先进行转换才能在android当中使用。
使用方法:
image.pngimage.png
image.png
需要注意: 当选Local file 中 的psd的时候,不支持图片的渐变色、透明度。
批量转换svg
多个svg转换android的vector,下载svg2vector-cli-1.0.1.jar
执行转换:
java -jar svg2vector-cli-1.0.1.jar -d .-o convert -h 20 -w 20
下载地址:https://github.com/MegatronKing/SVG-Android/tree/master/svg-vector-cli/bat
SVG兼容两种方式
这样就不需要 xh xxh 两套图了,只需要导入svg文件,自动生成xh xxh ... 多种所需的png套图
- Android5.0以下
model的build.gradle中:
vectorDrawables.generatedDensities('xhdpi','xxhdpi')
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.zhi.shi.myklik"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
//将svg图片生成制定维度的图片
vectorDrawables.generatedDensities('xhdpi','xxhdpi')
}
}
- Android5.0以上
model的build.gradle中:
implementation 'com.android.support:appcompat-v7:28.0.0'
vectorDrawables.useSupportLibrary = true
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.zhi.shi.myklik"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
//使用support-v7兼容
vectorDrawables.useSupportLibrary = true
}
}
布局使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_favorite_black_24dp"/>
</LinearLayout>
image.png
APK优化(一)之SVG--------------解决大量的套图问题
APK优化(二)之Tint着色器-------------减少apk体积
APK优化(三)之资源打包配置----resources.arsc
APK优化(四)之.so动态库打包配置
APK优化(五)之移除无用资源,物理删除
APK优化(六)之代码混淆
APK优化(七)之启用shrinkResources资源缩减 ,不需要物理上的删除
APK优化(八)之启用webp转换插件-----图片变小
APK优化(九)之资源res文件混淆和7ZIP压缩