getLocationInWindow / getLocationOnScreen / getHitRect中的奇怪偏移量

时间:2013-12-09 11:38:08

标签: java android android-4.3-jelly-bean

我正在开发一个Android应用程序,它需要处理屏幕上的点击并将它们转换为地图上的地理位置。为此我有一个辅助方法,可以帮助我调整水龙头在屏幕上的实际位置注册的点。因此,我有这段代码:

int[] offset = new int[2];
getLocationInWindow(offset);
point.x += offset[0];
point.y += offset[1];

这段代码完全符合我的要求并且已经完成了大约2 - 3年。应用程序在这段时间内正确处理了这些翻译。但是,出于某种原因,HTC One出现了问题,我们最近试图对其进行测试。我认为它的方式可能与Android 4.3相关(因为它是我们唯一的4.3设备)或者与One在屏幕上有一个软按钮这一事实有关。我遇到的问题是,每次登记的触摸都会比预期的低20到20个像素。这种差异总是在底部,但就像我说的那样我可以重现它的唯一设备就是这个设备。

我尝试过使用getLocationOnScreen,我也已经有了这个代码:

Rect r = new Rect();
getHitRect(r);
point.x += r.left;
point.y += r.top;

所有这些导致同样的问题。我试图做的任何其他调整似乎解决了这个问题,但在所有其他测试设备上产生相反的问题。我的选择已经用完了。

0 个答案:

没有答案