java代码中使用DrawableCompat
Drawable orgiDrawable = ContextCompat.getDrawable(this, R.drawable.btn_default_normal_holo);
Drawable tintDrawable = DrawableCompat.wrap(orgiDrawable).mutate();
DrawableCompat.setTint(tintDrawable, Color.parseColor("#00ff00"));
ImageView backTintImg = (ImageView)findViewById(R.id.tint);
backTintImg.setImageDrawable(tintDrawable);
// ---------------------------------------------
// 必须重新获取下对象
Drawable orgiDrawable2 = ContextCompat.getDrawable(this, R.drawable.btn_default_normal_holo);
Drawable tintlistDrawable = DrawableCompat.wrap(orgiDrawable2).mutate();
DrawableCompat.setTintList(tintlistDrawable, ContextCompat.getColorStateList(this, R.color.custom_tint));
DrawableCompat.setTintMode(tintlistDrawable, PorterDuff.Mode.MULTIPLY);
ImageView tintListImg = (ImageView)findViewById(R.id.tintlist);
tintListImg.setImageDrawable(tintlistDrawable);
// ---------------------------------------------
ImageView colorfilterImg = (ImageView)findViewById(R.id.colorfilter);
colorfilterImg.setColorFilter(new PorterDuffColorFilter(Color.parseColor("#ccffcc"), PorterDuff.Mode.MULTIPLY));
3. 资源打包配置
Android Gradle还为我们 提供了一个r
esConfigs,它属于ProductFlavor的一个方法,可以让我们配置哪些类型的资源才被打包到Apk中,比如只有中文的,只有hdpi格式的图片等等,这是非常重要的,比如我们引用的第三方库,特别是Support Library 和 Google Play Services这两个主要的大库,因为国际化的问题,他们都支持了几十种语言,但是对于我们的App来说,我们并不需要这么多,比如我们只用中文的语言就可以了,其他的都不需要。
build.gradle
defaultConfig {
……
resConfigs ‘zh’, 'en’,‘ja’
}
设置后生成的APK资源。系统默认语言是英语en
4. 配置不同CPU的so库
build.gradle
defaultConfig {
ndk {
abiFilters(‘armeabi’)
}
}
5. 删除无用资源(lint)
AndroidStudio Analyze->Run Inspection by Name->Unused resources
6. 代码混淆
gradle属性 minifyEnabled
混淆配置 -dontwarn -keep
7. 资源压缩
developer.android.google.cn/studio/buil…
gradle属性 shrinkResources 对无用资源压缩
将无用的图片改成占位图,无用的xml改成空根文件
可以通过res/raw/keep.xml来保持不压缩
8. webp图片 AndroidStudio提供了菜单操作
9. 资源混淆
最后
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
最后针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
eactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!