MotionEvent提供的getX()和getRawX()

在Android中处理触摸事件时,MotionEvent提供了几个方法来获取触摸点的坐标,其中两个最常用的是getX()getRawX()。这两个方法的主要区别在于它们参考的坐标系统不同:

  1. getX()

    • 这个方法返回的是触摸点相对于当前View左上角的坐标。换句话说,它是基于View内部的局部坐标系统。如果View位于屏幕的其他位置,或者因为滚动而移动过,那么getX()getY()会反映相对于View本身的位置,而不是屏幕的绝对位置。
  2. getRawX()

    • 相比之下,getRawX()getRawY()返回的是触摸点相对于设备屏幕左上角的坐标,不考虑任何View的边界或滚动。这意味着无论View在屏幕上的实际位置如何,getRawX()都将给出相对于整个屏幕的绝对坐标。

举例说明

假设有一个Button位于屏幕中央,并且屏幕分辨率是1080x1920像素,Button的坐标是(200, 300)像素(左上角为原点)。如果用户在Button的中心点击,以下情况会发生:

  • 使用getX(),返回的X坐标将是Button宽度的一半,因为这是相对于Button左上角的坐标。如果Button宽100像素,那么getX()可能返回大约50。
  • 使用getRawX(),返回的X坐标将是屏幕左上角到Button中心的实际距离。在这个例子中,getRawX()将返回大约250(200 + 50),因为它包括了Button自身的左边界和Button内部点击点的坐标。

因此,选择使用哪一个取决于你的需求。如果你需要知道触摸点相对于View的位置,使用getX()getY();如果你需要知道触摸点在整个屏幕上的确切位置,使用getRawX()getRawY()

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值