我知道这个标题听起来像是重复的,但我认为我在这里有一个非常具体的情况,我无法从我的所有搜索中解决。
首先,我有基于特定监视器(是的,监视器。不是手持设备的屏幕)的特定尺寸的图像。这些图像基于以下特定设置:
- 1600x900 20" 显示器,96ppi
现在,所有图像的大小必须以毫米为单位(顺便说一句,它们是方形图像,因此高度 = 宽度)。使用这些特定设置作为决定因素,1mm = 3.78px。所以,我的图像是使用这个来调整大小的。例如,对于显示为 65 毫米的图像,我将图像大小设置为 246 像素。我使用这些设置在 Photoshop 中对此进行了测试,实际上测量屏幕上的图像确实是正确的。
所以现在在我的 Android 应用程序中,我将这些图像加载ImageViews
到显示中。这就是我卡住的地方。该设备是 MDPI 设备。如果我将图像加载到 MDPIdrawables
文件夹中,则图像在显示器上显得太大。使用上面的示例,我将其转换Drawable
为 aBitmap
并将图像的高度转储到我的日志中。这是正确的,显示为 246 像素,但由于某种原因,它的测量值远远超过 85 毫米而不是 65 毫米。
如果我将所有图像加载到 HDPI 中(是的,我知道它是一个 mdpi 设备,因此它将由 Android 操作系统调整大小),图像的高度(使用我的示例)转储为 164 像素并出现在大约 50 毫米处。这更容易解释,但我仍然对如何让这些图像像在 Photoshop 中那样出现感到困惑。
所以我的问题是,以编程方式将ImageView
其大小调整为图像的确切大小的最佳方法是什么?对于我的示例,我需要找出为什么我的 246px 方形图像(96ppi)没有像应有的那样显示为 65mm。
因为这些ImageView
s 是通过编程方式生成的,所以我尝试了以下两件事:
- 将
ImageView
高度和宽度(使用LayoutParams
)设置为图像的高度(246 像素)。我这样做的想法WRAP_CONTENT
是没有按照应有的方式行事。 - 用于
ImageView.ScaleType.CENTER
尝试确保ImageView
尺寸与图像完全一致。
这些东西似乎都没有影响输出。
更新:
我已验证我的设备是 MDPI 设备。这意味着由于 1:1 的关系,不需要 DPI 到 PX 的转换(反之亦然)。在某个地方,尺寸正在增加,我无法确定在哪里。正如我在下面答案的评论中指出的那样,当我拉出我的 Drawable 并将其转换为位图时,它会拉出我制作的精确像素高度。我开始计算与应有的尺寸差异的百分比(65mm 与 85mm),结果为 23.529%。我正在缩放我的位图减去这个值,但它破坏了我的图像质量。
我开始放弃了。
我正在使用的设备是 MK802III Rockchip 设备(亚马逊链接)