0

我想将鼠标图像放置在包含不同鼠标孔的壁纸上。我的壁纸的比例类型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),位置并不完全匹配。壁纸是带有四个不同鼠标孔的图像,我希望鼠标的位置在所有平板电脑上都匹配。

4

2 回答 2

0

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

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

比例类型的示例

这基本上就是您一直在做的事情以及为什么会出现错误,尽管有点夸张。

给定一个 100x100 像素的图像

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

(我还没有考虑密度)

给定一个高度为 100 像素,宽度为 50 像素的 imageView。

使用 centerCrop,这将缩放图像:宽度的一半,并偏移高度,结果如下

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

您必须对点应用与图像相同的缩放比例:在此示例中为 [x/2, y - 25]。

缩放自己!

您需要自己缩放位图。进行一些计算,获取偏移量并将其应用于您的位图和位置。

密度

密度在这里并不是真正的问题,因为您可以计算所有密度的位置并将这些值设置在value-mdpietc 文件夹中。

于 2016-01-04T18:17:37.930 回答
0

在此处查看支持多种屏幕尺寸的开发人员指南

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

于 2016-01-04T15:55:34.947 回答