总结:
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:
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代码片段:
xml代码:
在小米note pro测试,此机型分辨率为1440*2560,ppi大约640左右。根据dp*ppi/160 = px。
100dp等于400px,显然和理解的是一样的。
当点击小v的中心部分时,log日志如下。
显然和理解的也是一样的。
第一篇记录的文章,如有错误,欢迎指出。我是二毛,热爱技术,热爱分享,我为自己带眼!!!
最后的最后,放一张引狼图,喜欢的右键吧