笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Android 计算Bitmap大小相关的知识,希望能为你提供帮助。
今天使用LruCache写demo的时候,要获取Bitmap的大小
于是就用到了
return bitmap.getRowBytes() * bitmap.getHeight();
// 获取大小并返回
//Bitmap所占用的内存空间数等于Bitmap的每一行所占用的空间数乘以Bitmap的行数
为什么不用bitmap.getByteCount()呢?
因为getByteCount要求的API版本较高,考虑到兼容性使用上面的方法
1、getRowBytes:Since API Level 1
2、getByteCount:Since API Level 12
查看Bitmap源码
[java]
view plain
copy
print?
- public final int getByteCount() {
- return getRowBytes() * getHeight();
- }
所以API 12 以后
getByteCount() = getRowBytes() * getHeight();
在计算Bitmap所占空间时上面的方法或许有帮助。
补充:
【Android 计算Bitmap大小】
[java] view plain copy print?
- /**
- * 得到bitmap的大小
- */
- public static int getBitmapSize(Bitmap bitmap) {
- if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.KITKAT) { //API 19
- return bitmap.getAllocationByteCount();
- }
- if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.HONEYCOMB_MR1) {//API 12
- return bitmap.getByteCount();
- }
- // 在低版本中用一行的字节x高度
- return bitmap.getRowBytes() * bitmap.getHeight(); //earlier version
- }
推荐阅读
- MAC下如何配置Android手机调试(将测试手机加入到Mac系统的调试列表中)
- 去掉Android新建项目的顶部标题
- Android实战——GreenDao3.2的使用,爱不释手
- Android学习笔记---使用TabHost实现微信底部导航栏效果
- 关于android编程中service和activity的区别
- 算法设计(布尔括号问题| DP-37)
- 登山简介|人工智能
- 算法题(比赛选择(GA)问题介绍和解决方案)
- 算法题(使用分治算法的最大子数组总和)