标签:版本 gravity end 双击 stop http nts round anim
前两天和上家公司的上司无意聊了聊工作的事,也就顺便扯到了apk瘦身上。主要是通过SVG进行图片压缩来减少app的大小。下面我就详细介绍一下如何实现SVG的图片压缩。
首先我们需要安装一款软件 Vector magic
下载完成后解压,如下:
我们在keygen 1.15里双击复制第五行进行破解,因为我这边已经破解过了就不展示了。
现在我们来做一个测试,首先,原图大小如下:
1.34M,这个背景图其实已经不小了。接下来我们把他通过svg进行压缩成xml。
我们直接打开软件,打开我们要进行压缩的图片。
直接点击全自动,当然你们也可以自己设置。
这样我们就压缩好了。点击完成,我们将他进行保存。
记得后缀名设置成svg 因为默认的好像不是它。压缩完了。我们看下大小,可是直接少了2/3呢。
最后我们把他放到android studio 或者IntellJ Idea中。
然后是这样:
注意了。这只是个测试。还是用大图测试的,所以比较明显,那我现在用之前的五子棋来完成完整的测试。首先看下我的图片资源是经过适配的。
在来看看我们没瘦身之前APK的大小。
一个五子棋7M功能也不多,估计也没人下载把。。下面重点到了。我们把所有资源通过svg进行压缩。压缩完是这样的。因为svg是xml文件,所以我们并不需要去做适配。
想知道瘦身之后的大小了。下面我就揭晓答案把。
没错,一个原本6.89M的app就光通过图片压缩变成了3M。当然我们还可以通过别的形式来进行图片压缩,不过个人爱好而已。
首先我们需要知道的是svg只适合5.0以上的手机,但我们做适配一般都要兼容到4.0。虽然现在4.0的用户很少。我妈手机都6.0了~虽然我的才是5.0~~~
你在创建vector xml的同时Vector Asset Studio工具同时在不同的dpi文件中会生成相应的png图片。如图:
这样就发挥不出vector drawable的优势了。(因为这样引用的其实就是png图片而已)这时候就要使用支持库了。下面讲解支持库的使用。
1、如果你的工程minimum API level大于等于21
正常使用没有任何关系
2、如果你的工程minimum API level小于21,你仍然要使用vector drawable的话就必须使用支持库Support Library 23.2 or higher。
这里有几点需要注意:
(1)首先你的activity必须继承AppCompatActivity
(2)其次在你的 module的build.gradle中根据Android Plugin Gradle版本的不同需要加上这几句:
对于Android Plugin for Gradle 2.0 or higher需要加上:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
compile ‘com.android.support:appcompat-v7:23.2.0‘
}
对于Android Plugin for Gradle 2.0以下需要这样:
android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag to tell aapt to keep the attribute ids around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
(3)在应用vector drawable的时候需要这样写,加入有一个ImageView要应用一个叫做test的vector drawable:
<ImageView
android:id="@+id/img_animated_vector"
android:layout_width="match_parent"
android:layout_height="400dp"
app:srcCompat="@drawable/test"/>
这样我们的适配就算真正的完成了。
当然,对于apk的瘦身还有好多种,以后有时间我会在我所知道的范围内来一一介绍。
标签:版本 gravity end 双击 stop http nts round anim
原文地址:http://blog.csdn.net/sw950729/article/details/61920576