最近在自定义view中,用到onTouchEvent 方法里的MotionEvent中getRawX()、getRawY()与getX()、getY(),四个参数,一直没怎么注意过这几个参数有什么异同,现在在这里记录一下。
(盗用网友的图 +||+)
getX()和getY()获得的是触摸点相对于View自身左上角的位置(这两个值不会超过view的长度和宽度)
getRawX()和getRawY()获得的是触摸点相对于手机屏幕左上角的位置 (注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕)
PS:
-
如果是在Activity中实现OnTouchListener接口,需要重写 onTouch 这个方法,getRawX()和getRawY()获得的是相对屏幕的位置,getX()和getY()获得的永远是view的触摸位置坐标(这两个值不会超过view的长度和宽度)。
-
如果重写了 Activtiy 的 onTouchEven 方法这时获得的是屏幕点击位置的坐标。event.getX() 与 event.getRawX()获取的值是一样的,event.getY() 与 event.getRawY()获取的值是一样,还能获取触摸标题栏时的坐标位置,但是触摸状态栏时的坐标位置不能获得。