【问题标题】:How to get screen cordinates corresponding to the whole screen, and not the View touched?如何获取与整个屏幕相对应的屏幕坐标,而不是触摸的视图?
【发布时间】:2012-08-03 15:55:06
【问题描述】:

通过处理一个视图项的触摸事件,我无法从屏幕上获取真实的 (x,y)。

我有这个:

当我触摸 View 项目时,它会给我与位于他左上角的原点的坐标,如果我将手指滑出视图,它会给我负坐标(向上或向左滑动时)。

我想获取屏幕中的View位置,把它加到我得到的(x,y)坐标上,所以最后的结果是(0,0)在左上角整个屏幕。

我还需要屏幕总尺寸,以便我知道手指何时位于右下角。

我怎样才能做到这一点?

谢谢。

【问题讨论】:

    标签: android screen coordinates android-view


    【解决方案1】:

    MotionEvent 类有 getX()getY() 方法,它们返回相对于视图的坐标,正如您所发现的那样。

    但是它也有 getRawX()getRawY() 方法,根据文档说:

    返回此事件的原始原始 X(或 Y)坐标。对于屏幕上的触摸事件,这是屏幕上事件的原始位置,在它被调整为包含窗口和视图之前。

    听起来这就是你所追求的。

    【讨论】:

    • 这是最简单的方法,谢谢解答。
    【解决方案2】:

    在屏幕上加载视图后尝试使用它。

    int[] location = new int[2];
    View.getLocationOnScreen(location); 
    Log.v(Common.TAG,"left: "+ location[0]);
    Log.v(Common.TAG,"top: "+ location[1]);
    

    【讨论】:

      【解决方案3】:

      获取View 在屏幕上的位置,然后您可以使用简单的算术计算其余部分。 How to get the absolute coordinates of a view

      【讨论】:

        猜你喜欢
        • 2021-10-14
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        相关资源
        最近更新 更多