Android App内存优化之图片优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android App内存优化之图片优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1840字,纯文字阅读大概需要3分钟。
内容图文
不要将Button的背景设置为selector
??在布局文件和代码中,都可以为Button设置background为selector,这样方便实现按钮的正反选效果,但实际跟踪发现,如果是将Button的背景设置为selector,在初始化Button的时候会将正反选图片都加载在内存中(具体可以查看Android源码,在类Drawable.java
的createFromXmlInner
方法中对图片进行解析,最终调用Drawable
的inflate
方法),相当于一个按钮占用了两张相同大小图片所使用的内存,如果一个界面上按钮很多或者是按钮很大,光是按钮占用的内存就会很大,可以通过在布局文件中给按钮只设置正常状态下的背景图片,然后在代码中监听按钮的点击状态,当按下按钮时为按钮设置反选效果的图片,抬起时重新设置为正常状态下的背景。
如果你觉得为一个按钮提供正反选两张图片会导致APK的体积变大,可以通过如下方式实现按钮点击的反选效果,这种方式既不会存在Button占用两倍内存的情况,又减小了APK的体积(Android 5.0中的tintColor也可以实现类似的效果):
ImageButton personalInfoBtn = (ImageButton)findViewById(R.id.personalBtnId);
personalInfoBtn.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
((ImageButton)v).setColorFilter(getResources().getColor(0X50000000));
}else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL){
((ImageButton)v).clearColorFilter();
}
// 为了不影响监听按钮的onClick回调,返回值应为false
return false;
}
});
其它优化方式
1、尽量将Activity中的小图片和背景合并,一张小图片既浪费布局的时间,又平白地增加了内存占用;
2、不要在Activity的主题中为Activity设置默认的背景图片,这样会导致Activity占用的内存翻倍:
<!--千万不要在主题中为Activity设置默认背景
<style name=
"Activity_Style"
parent=
"@android:Theme.Holo.Light.NoActionBar"
>
<item name=
"android:background"
>
@drawable
/*</item>
</style>
3、对于在需要时才显示的图片或者布局,可以使用ViewStub标签,通过sdk/tools目录下的hierarchyviewer.bat查看布局文件会发现,使用viewstub标签的组件几乎不消耗布局的时间,在代码中当需要显示时再去实例化有助于提高Activity的布局效率和节省Activity消耗的内存。
注意:如果使用到WebView、视频播放、手写、动画等功能时,关掉硬件加速会严重音效程序的运行效率,这种情况可以只关闭掉Activity中某些view的硬件加速,整个Activity的硬件加速不关闭。
?? 如果Activity中某个View需要关闭硬件加速,但整个Activity不能关闭,可以调用view层级关闭硬件加速的方法:
setLayerType(View.LAYER_TYPE_SOFTWARE,
null
); // view.setLayerType || 在定义view的构造方法中调用该方法
原文:http://www.cnblogs.com/lucktian/p/7019326.html
内容总结
以上是互联网集市为您收集整理的Android App内存优化之图片优化全部内容,希望文章能够帮你解决Android App内存优化之图片优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。