Android 坐标小结

Android 坐标小结_第1张图片
坐标.png

本文主要是比较getX,event.getRawX,getScrollX,event.get几种获取坐标方法的区别。

灰色框:整个屏幕,包含状态栏,标题栏,内容区域
黑色框:控件
绿色框:控件里面的内容
红色点:点击的位置

黑色框和绿色框是什么意思呢?
解释一下,如果黑色框代表ViewGroup,那绿色框就是子控件。如果黑色框代表View(Button或ImageView等),那么绿色框就可能是文字或是图片或其他内容。

假设黑色框是ViewGroup,绿色框是子控件
测试三种情况下的坐标:
图1.不移动子控件
图2.然后移动子控件
图3.修改ViewGroup在其父容器的位置,不移动子控件
需要注意的是这些坐标都是基于ViewGroup获得的

getY()/getX() :图1、2,在ViewGroup在其父容器的位置没有移动时,Y/X都为零,在图3中ViewGroup分别向x/y轴移动50距离后,Y/X坐标变成50,而且点击ViewGroup任意位置Y/X坐标都为50。

event.getY()/event.getX():结合3个图,可以看到event.getY()/event.getX()不受子控件影响,得到的坐标都是基于ViewGroup的

getScrollY()/getScrollX():图1、3中子控件相对于viewGroup不移动,所以坐标不变化。图2中子控件相对于ViewGroup分别向想x/y轴移动,所以坐标发生变化,这里要注意的是得到坐标都是相反的,这里可以理解成 ViewGroup 相对于 子控件坐标原点(左上角)移动了多少

event.getRawY()/enent.getRawX():这个最好理解了,它不受任何影响,得到的就是相对于屏幕坐标原点(左上角)的坐标

小结

**getY()/getX() **:当前操作的控件相对其父控件移动的距离

event.getY()/event.getX():触摸的位置在当前操作控件的位置

getScrollY()/getScrollX():当前操作控件的内容移动的距离

event.getRawY()/enent.getRawX():相对于屏幕坐标原点(左上角)的坐标

你可能感兴趣的:(Android 坐标小结)