BitmapFactory.decodeResource加载图片缩小的原因及解决方法

本文分析了在Android中使用BitmapFactory.decodeResource加载图片时,图片为什么会根据不同的drawable目录(hdpi、mdpi、ldpi)被缩小,并解释了densityDpi、inDensity和inTargetDensity的关系。通过理解这些参数,提出了解决图片缩放问题的方法,即保持density和targetDensity一致,从而避免不必要的图片缩放。

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

  声明:我是以2.0的代码为参考的,主要参考了BitmapFactory.java文件。

  首先,在2.0应用中,res下有drawable-hdpi、drawable-mdpi、drawable-ldpi三个存放图片的文件夹,查资料看到如下描述:

    这是分辨率的不同,H是高分辨率 M是中 L是低。
    drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
    (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
    (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
    (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

  开始不太理解,所以,看完代码后,先做了个实验,在三个文件夹下分别放入图片,通过下面的测试代码:

		private int getTargetDensityByResource(Resources resources, int id) {
			TypedValue value = new TypedValue();
			resources.openRawResource(id, value);
			Log.d("LuoYer", "value.density: " + value.density);
			return value.dens
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值