如何获得触摸事件的绝对位置?

时间:2019-08-12 06:23:29

标签: android view position

我制作了一个Recylerview,并在Element的左下方添加了一个按钮。 现在,当我使用时:

private View.OnTouchListener onWidthClickListener =
      new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
          if (event.getAction() == MotionEvent.ACTION_MOVE) {
              int x = (int) event.getX();
              Log.d(TAG, "Width: " + x);

          }
          return false;
        }
      };

我获得了滑行器的位置,但它对按钮是绝对的,并且我希望它相对于孔屏幕。

因为它是RecylerView,所以按钮相对于Screen没有固定的位置,因此我不能只添加或减去布局的值。

2 个答案:

答案 0 :(得分:1)

如果要相对于设备屏幕左上角的坐标,请使用原始值。

int x = (int)event.getRawX();
int y = (int)event.getRawY();

素蛋白:

getX() getY() ->返回相对于视图的坐标。

MotionEvent.getRawX() MotionEvent.getRawY() ->返回绝对坐标,关于设备的屏幕。

有关更多详细信息:doc

答案 1 :(得分:0)

您可以使用event.getRawX()event.getRawY()获取相对于屏幕的位置。