欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决Bitmap通过getWidth和getHeight获取尺寸不符的问题

程序员文章站 2022-03-20 18:25:26
在使用bitmapfactory加载图片时,常会出现这种情况,返回的图片尺寸与实际尺寸不符。这是由于我们把图片资源放到res/drawable文件路径下时,选择的文件不同所致,不同的文件夹会有不同的缩...

在使用bitmapfactory加载图片时,常会出现这种情况,返回的图片尺寸与实际尺寸不符。这是由于我们把图片资源放到res/drawable文件路径下时,选择的文件不同所致,不同的文件夹会有不同的缩放。

1、加载并显示图片

将70*98的图片放在res/drawable-hdpi中。

运行结果如下图所示:

解决Bitmap通过getWidth和getHeight获取尺寸不符的问题

这里尺寸和原图相同

2、修改文件存放路径

(1)放到res/drawable-mdpi下,运行效果如图

解决Bitmap通过getWidth和getHeight获取尺寸不符的问题

这里尺寸放大了1.5倍

(2)放到res/drawable-xhdpi下,运行效果如图

解决Bitmap通过getWidth和getHeight获取尺寸不符的问题

尺寸缩小了1.3倍

(3)放到res/drawable-xxdpi下,运行效果如图

解决Bitmap通过getWidth和getHeight获取尺寸不符的问题

尺寸缩小了2倍

3、寻找原因

电脑上图片尺寸,单位是像素。android手机的屏幕分ldpi、mdpi、hdpi,甚至还有xhdpi,对于mdpi(density=160)设备,1dp=1px,对于hdpi(density=240)的设备,1dp=1.5px。所以,把图片放在了res/drawable-mdpi目录下,而运行的android设备屏幕属于hdpi,导致图片尺寸会扩大1.5倍。

4、解决办法

(1)现在的android设备一般都在hdpi及以上,所以建议把图片资源主要放在hdpi中。

(2)修改上述代码,设置缩放为false

运行后你会发现,不论你将图片放在哪里,都是原尺寸。

补充知识:android 获取drawable中图片的高度宽度

1.定义一个imagedata类如下:

2.在drawable中放置一些图片:

3.获取每个图片的高度宽度并保存数据到mdata中:

关键代码就这么几句:

以上这篇解决bitmap通过getwidth和getheight获取尺寸不符的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。