将图像定位在平板电脑之间的特定X和Y位置不一致

时间:2016-01-04 15:48:29

标签: android imageview coordinates screen-positioning

我想将鼠标图像放在包含不同鼠标孔的壁纸上。我的壁纸mouseHole的比例类型设置为CENTER_CROP

我使用以下代码设置鼠标的X和Y位置:

int mouseX = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, xLoc, getResources().getDisplayMetrics());
int mouseY = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, yLoc, getResources().getDisplayMetrics());

然而,在两个不同的平板电脑(特别是三星Galaxy Tab 5与华硕ZenPad 10)上,这些位置并不完美匹配。壁纸是一个带有四个不同鼠洞的图像,我希望鼠标的位置能够在所有平板电脑上匹配。

2 个答案:

答案 0 :(得分:0)

查看开发人员指南,了解支持多种屏幕尺寸here

TLDR:您可以在Android清单中设置只允许具有本节中指定的屏幕尺寸的用户查看和下载您的应用程序。 OR 为不同的屏幕尺寸创建不同的布局,这是更多的工作,但它是您所需要的:)

答案 1 :(得分:0)

您不能将固定位置与ImageView和scaleTypes一起使用。

图像缩放后,您必须将相同的变换应用于鼠标坐标。

比例类型

的示例

这基本上就是你一直在做的以及为什么会出现错误,但有点夸张。

给出图像100x100px

  • 鼠标 A 位于图像的[100px,100px]
  • 鼠标 B 在[5,5]

(我还没考虑密度)

给定一个图像,其高度为100px,宽度为50px。

使用centerCrop,这将缩放图像:宽度的一半,并偏移高度,导致以下

  • 鼠标 A 仍然在[100,100],这将在视图之外(宽度为50),而
  • 鼠标 B 将从顶部[5,5]绘制,在缩放和裁剪之前将在图像上解析为[10,30]

您必须像对图像一样对点进行相同的缩放:[x / 2,y - 25]。

扩展自己!

您需要自己缩放位图。做一些计算,得到偏移并将其应用到你的位图和位置。

密度

密度在这里确实不是问题,因为您只需计算所有密度的位置,并在value-mdpi等文件夹中设置这些值。