关于android中的getX,getY,getRawX,getLeft等位置参数的理解

总结:

view下的方法:

getX(): 该view坐标系中,x坐标值

getY():该view坐标系中,y坐标值

getLeft():该view距离父布局左边的距离

getRight():该view距离父布局右边的距离

getTop():该view距离父布局上边的距离

getBottom():该view距离父布局下边的距离

getTranslationX():该view的横向偏移距离,初始为0

getTranslationY():该view的纵向偏移距离,初始为0

MotionEvent下的方法:

getX(): 该view坐标系中,手指触控点的x坐标值

getY():该view坐标系中,手指触控点的y坐标值

getRawX():屏幕坐标系中,手指触控点的x坐标值

getRawY():屏幕坐标系中,手指触控点的y坐标值

黑色的区域为研究对象view(后面我们称之为: 小v),淡红色区域后面我们称之为:大v:

关于android中的getX,getY,getRawX,getLeft等位置参数的理解_第1张图片

android3.0以前,view的位置参数只有top,left,right,bottom。3.0以后,增加了额外的,x,y,translationX,translationY(他们各自拥有get/set方法)。x,y是代表view的左上角的坐标,而translationX,translationY代表view左上角相对于父容器在各自方向的偏移量。如本例,小v 的x,y代表他在 大v 的坐标系中左上角的坐标。

其中,View在平移的过程中,top和left表示的是原始左上角的位置信息,所以其值不会发生改变,此时发生改变的是x,y,translationX,translationY。所以可以得出如下公式:

x = left + translationX

y = top + translationY


以下粘贴出我的实验过程:

java代码片段:

关于android中的getX,getY,getRawX,getLeft等位置参数的理解_第2张图片

xml代码:

关于android中的getX,getY,getRawX,getLeft等位置参数的理解_第3张图片

在小米note pro测试,此机型分辨率为1440*2560,ppi大约640左右。根据dp*ppi/160 = px。

关于android中的getX,getY,getRawX,getLeft等位置参数的理解_第4张图片

100dp等于400px,显然和理解的是一样的。

当点击小v的中心部分时,log日志如下。

显然和理解的也是一样的。


第一篇记录的文章,如有错误,欢迎指出。我是二毛,热爱技术,热爱分享,我为自己带眼!!!


最后的最后,放一张引狼图,喜欢的右键吧

关于android中的getX,getY,getRawX,getLeft等位置参数的理解_第5张图片

你可能感兴趣的:(关于android中的getX,getY,getRawX,getLeft等位置参数的理解)