gpt4 book ai didi

android - 根据屏幕密度获取drawable实际尺寸

转载 作者:行者123 更新时间:2023-11-29 21:23:48 26 4
gpt4 key购买 nike

我有一个 mdpi、hdpi 和 xhdpi 的可绘制资源(一个 png 图像)。此图像用作背景,我根据其宽度调整另一个位图的大小并将其绘制。

mdpi、hdpi 和 xhdpi 一切正常,因为我的每个密度的可绘制文件夹都有图像。问题出现在不同的密度上,例如在具有 1080p 屏幕的 Galaxy S4 上运行

这是我的做法:

//Get the bitmap width

BitmapFactory.Options dimensions = new BitmapFactory.Options();
dimensions.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.ic_marker_void, dimensions);
int width = dimensions.outWidth;

我在测试中发现,在 720p 屏幕上运行时宽度为 80 像素,但在 1080p 设备上运行时宽度也是 80 像素。这与 xhdpi 文件夹中的 png 大小相同。

但实际上,当我在 1080p 屏幕上显示图像时,图像会按比例正确渲染。所以它确实采用了 xhdpi 图像,但它在显示之前对其进行了缩放。作为旁注,该图像用作 map 标记背景。

我的问题是:如何准确获取图像在屏幕上的渲染宽度,而不是从 xhdpi 文件夹中获取图像的大小?

最佳答案

也许这就是您要找的:
正如您所说,这假设您的代码适用于 mdpi、hdpi 和 xhdpi,并在大于 xhdpi 时返回 xhdpi 宽度。

float width;
BitmapFactory.Options dimensions = new BitmapFactory.Options();
dimensions.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.ic_marker_void, dimensions);

float densityFactor = this.getResources().getDisplayMetrics().density;
if(densityFactor > 2) // 2 -> xhdpi
width = dimensions.outWidth / 2 * densityFactor;
else
width = dimensions.outWidth;

关于android - 根据屏幕密度获取drawable实际尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20398850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com