1

我怀疑来自Events 的坐标是否正确。

我的应用程序在其布局中有一个Activity带有根元素的实例。FrameLayout我正在开发 Galaxy Nexus,Android 4.0.2,但正在为 Android 1.6 API 编写应用程序。

现在来制作这个:

让我们覆盖实例onTouch()上的回调并添加这个记录器(代表):FrameLayouteevent

Log.i("a",String.valueOf(e.getY()-e.getRawY())
        +" "+String.valueOf(e.getY())
        +" "+String.valueOf(e.getRawY()));
     );

然后我们检查输出是什么:

06-03 16:31:50.560: I/a(15480): 0.0 676.4715 676.4715
06-03 16:31:51.326: I/a(15480): 0.0 675.4723 675.4723
06-03 16:31:51.380: I/a(15480): 0.0 680.4684 684.4653
06-03 16:31:51.388: I/a(15480): -100.0 584.4653 684.4653
06-03 16:31:51.412: I/a(15480): 0.0 686.4637 686.4637
06-03 16:31:51.412: I/a(15480): 0.0 686.4637 686.4637

看到第四招的奇怪波动了吗?有趣的是,“100.0”正是上层 Android OS 菜单图形元素的高度(在我的例子中)。这些“100.0”可以通过以下方式从应用程序中获取:

float padding = act.instance.getWindowManager().getDefaultDisplay().getHeight()
                -fl.getBottom();

, 其中actActivity' 的实例并且flFrameLayout' 之一。

我可以补充一点,如果我们e.getY()从第四个笔画开始在布局上用第二个值 ( ) 绘制一些东西,它就会在手指的正下方。使用第三个值,它将远低于手指。所以我得出结论,系统在大多数情况下为我提供了错误的触摸 y 坐标值,有时会突然告诉我正确的值。

我目前的解决方法是只听e.getRaw()并减去上面计算的 Android 上屏元素高度。

所以问题是:

  1. 有没有人遇到过这个?也许运行这个记录器并检查它在您的配置上打印的内容?
  2. 如果您的配置受到影响,您知道是什么原因造成的吗?也许您可以说出更优雅的解决方法?

感谢您的关注!

4

0 回答 0