当前位置: 首页 > 面试题库 >

位图getWidth返回错误的值

梁豪
2023-03-14
问题内容

我的android应用程序drawable文件夹中有一个jpg图像,分辨率为1000x600。我像这样将图像加载到位图

 Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);

之后,我打电话bitMap .getWidth()返回1500。怎么回事?以及如何获得正确的图像宽度和高度?


问题答案:

这可能是因为密度不同。您的资源可能存储在中等密度的文件夹中,但设备为hdpi。中密度为160dpi,高密度为240dpi。因此,您的位图将缩放为原始大小的1.5倍。有关更多信息,请参见多个屏幕上的文档。

如果没有可用的正确密度的资源,则系统将加载默认资源,并根据需要按比例放大或缩小以匹配当前屏幕的密度。

如果您打算将其用于高密度,则将其设置为drawable-hdpi而不是drawable或drawable-mdpi。

更新:

如果要忽略密度,请将其放在drawable-nodpi文件夹中。同样来自同一文档:

避免预缩放的最简单方法是使用nodpi配置限定符将资源放在资源目录中。例如:

res/drawable-nodpi/icon.png

当系统使用该文件夹中的icon.png位图时,它不会根据当前设备密度对其进行缩放。



 类似资料:
  • 问题内容: 我正在动态创建我的android项目中的所有元素。我正在尝试获取按钮的宽度和高度,以便可以旋转该按钮。我只是想学习如何使用android语言。但是,它返回0。 我做了一些研究,发现除了方法之外,还需要其他地方。如果有人可以给我一个例子,那就太好了。 这是我当前的代码: 任何帮助表示赞赏。 问题答案: 你打得太早了。UI尚未调整大小并在屏幕上布置。 无论如何,我怀疑你是否想做自己正在做的

  • 我自己用Adobe制作了图像(“trial.jpg”),并在图像中放置了一些红色、绿色和蓝色像素,这是一个从0,0(即左上角)开始的(30,11)像素网格。 这是我的代码: 我检查日志,但我得到错误的RGB值。我知道这个原因,我把红色(255,0,0),蓝色(0,0,255)和绿色(0,255,0)放在那些特定的正方形(像素)。 以下是日志: 我试着用8位Jpeg格式保存它...和16位Jpeg.

  • 在本地开发环境中使用Eclipse(Mars.1发行版(4.5.1))中的Forge 1.8.9。 在环游世界一小段时间后,然后注销该世界并返回(同一个会话中,退出并关闭MC),世界将无法出现在控制台中。该位置与“一切正常”登录中的位置相同。另外还有一个错误的位置!错误 控制台的错误如下: 我已经尝试过一些变化,包括Minecraft Forge:使用正确的连接游戏侦听器进行设置位置和角度,但不使

  • 基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par

  • 问题内容: 我正在通过Ajax将幻灯片(Jquery Ui Slider)中的每个滑块值传递到我的Controller。 Slider + Ajax看起来像这样: 因此,我确实有这样的想法: 我的路线如下所示: 在我的Controller方法中,我这样调用它: Log :: info($ sliderValue)告诉我,我确实在每张幻灯片上都获得了正确的滑块值。 当我尝试返回到编辑视图时,在控制台

  • 我写了一个二分搜索的递归程序,正如你所看到的,我试图在给定的数组中找到目标=21的位置,然后返回位置为2。但是,我的输出是1。当我调试它匹配att arr[start]=target时,它直接跳到findTheNumber(arr,mid+1,end,target)行;然后下一行,然后返回mid..只是想知道为什么我的返回在“返回开始”时中断了 }