android 坐标那点事

本文详细解析了Android中MotionEvent的坐标系统,包括getX、getY等方法的意义,以及View坐标系统的各种获取方法,如getLeft、getTop等,并对比了这些方法与平移属性translationX和translationY的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  1. MotionEvent坐标:
    1. getX:触点相对于所在View左上角的坐标的x值
    2. getY:触点相对于所在View左上角的坐标的y值
    3. getRawX:触点相对于屏幕左上角的坐标的值
    4. getRawY:触点相对于屏幕左上角的坐标的y值
  2. View坐标
    1. getX()与getY()方法获取的是View左上角相对于父容器左上角的坐标,当View没有发生平移操作时,getX()==getLeft()、getY==getTop()。
    2. translationX与 translationY是View左上角相对于父容器的偏移量:translationX = getX() - getLeft(),当View未发生平移操作时,translationX 与translationY都为0。
    3. View.getTop()、View.getLeft()、View.getBottom()、View.getRight()表示的是View原始状态时左上角相对于父容器左上角的坐标,对View进行平移操作并不会改变着四个方法的返回值。
    4. View.getLocationInWindow(int[] position);获取View左上角相对于整个屏幕左上角的坐标。
    5. View.getLocationInWindow(int[] position);获取View左上角相对于Window左上角的坐标。跟getLocationOnScreen相比,只有弹出窗口才有区别,如下图所示:

  1. View.getParent可以获取view的父容器,得到的是ViewParent这个接口
总结:
  1. 对于View来说,除了getLocationInWindow,getLocationInWindow这两个方法,其他的都是相对于父容器左上角的坐标的相对坐标

  1. 对于MotionEvent来说,加了Raw的就是相对屏幕左上角的坐标了

  1. 参考:
    1. https://blog.csdn.net/u013872857/article/details/53750682
  2. github:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值