【android学习】APP图片内存计算

本文阐述了在安卓开发中,图片在不同屏幕密度下的尺寸调整原则与内存占用计算方法,详细解析了图片尺寸和内存大小的计算公式,并通过实例说明了如何根据手机屏幕密度进行图片尺寸的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片尺寸大小计算

当图片文件放在项目的drawable目录时候:

  • drawable文件尺寸与pc中文件尺寸关系
目录屏幕密度
drawable-ldpi120dpi
drawable-mdpi160dpi
drawable-hdpi240dpi
drawable-xhdpi320dpi
drawable-xxhdpi480dpi
  • 获取手机的屏幕密度
C:\Users\Administrator>adb shell wm density
Physical density: 440

图片尺寸计算公式:

在手机中的width= (手机的屏幕密度/drawable目录设定的屏幕密度)* 图片在PC上面的宽度

在手机中的height= (手机的屏幕密度/drawable目录设定的屏幕密度)* 图片在PC上面的高度

 

举一个简单例子:

图片在pc上面的宽高为

demo.jpg存放在drawable-xhdpi目录,在代码中获取到的值

        BitmapFactory.Options options = new BitmapFactory.Options();
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.demo, options);
        Log.d(TAG, "width: " + bitmap.getWidth() + "  height : " + bitmap.getHeight());
        Log.d(TAG, "drawable-xhdpi屏幕密度: " + options.inDensity);
        Log.d(TAG, "内存大小  " + bitmap.getAllocationByteCount());

得到的结果是

2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660  height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 内存大小  2323200

这里的  660 = 440/320*480

             880 = 440/320*640

图片内存计算

先看图片的格式及其所占用的字节数,图片加载如果没有设置,默认是ARGB_8888

格式字节数
ALPHA_81个字节
RGB_5652个字节
ARGB-44442个字节
ARGB_88884个字节

内存计算公式: 内存 = 图片宽 * 图片高 * 每个像素所暂用的字节数

举个例子

上面的图片内存:  2323200 = 660 * 880 * 4

2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660  height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 内存大小  2323200

总结:

这里主要是从drawable中读取图片,获得的图片尺寸大小需要根据相应的手机密度以及drawable密度做相应的缩放,如果是从sdcard中读取,就没有缩放,直接使用图片宽*高*相应的字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值