Android开发中Bitmap高效加载使用详解-创新互联

由于Android对单个应用所施加的内存限制,比如16MB,这导致加载Bitmap的时候很容易出现内存溢出,本文主要包含2个方面的内容分析Bitmap内存和Bitmap高效加载

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的颍东网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

一、占用内存

获取bitmap的内存,android提供的方法bitmap.getByteCount()
假如现在mipmap-xhdpi 目录下,有一个 200 * 200 像素的图片,运行加载它,看它输出的尺寸。

Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.btn_go);
bitmap.getByteCount()的输出结果为360000
现在把图片转移到mipmap-xxhdpi 中
bitmap.getByteCount的输出结果为160000
那么mipmap-xhdpi 目录下为何会大这么多呢?

density 影响 Bitmap 内存
放在不同的 mipmap 目录下,对应的不同 density 的设备。density 是设备的固有参数,伴随着 density 的,还有 densityDpi,它也是与设备相关的,表示屏幕每英寸对应多少个点(非像素点)


Android开发中Bitmap高效加载使用详解

上面是官方提供的一张比较经典的图,可以看到,不同的目录,代表不同的 density ,例如 xhdpi 代表的 density 就是 2。而这里的 density 对 densityDip 的基准是 160 ,也就是说,mdpi 对应的 densityDpi 是 160 ,xhdpi 对应的 densityDpi 是 320,同样xxhdpi对应的densityDpi是480


density 和 densityDpi 在 Android 中,都有标准的 API 可以拿到,如下。

DisplayMetrics displayMetrics=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Log.i(TAG, displayMetrics.densityDpi+"");
Log.i(TAG,displayMetrics.density+"");

文章题目:Android开发中Bitmap高效加载使用详解-创新互联
浏览地址:http://bzwzjz.com/article/cspeej.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都响应式网站建设公司 四川成都网站制作 定制网站建设多少钱 重庆手机网站建设 品牌网站建设 成都网站建设 成都网站制作 成都网站设计 营销网站建设 广安网站设计 成都网站制作 梓潼网站设计 网站设计 成都网站建设 定制网站设计 四川成都网站建设 网站设计制作 高端网站设计推广 网站制作 app网站建设 企业网站设计 温江网站设计