由于android 的widget是画出来的,所示存在了超级多坐标标记和变量。
这里简单说明下。
一、Top, Left, Right, Bottom
View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top,left,right,bottom,其中top是左上角的纵坐标,left是左上角的横坐标,right是右下角的横坐标,bottom是右下角纵坐标。但是大家注意,这些坐标都是相对于View的父容器来说的,因此它是一种相对坐标,View的坐标和父容器的关系如下图
由此得出View的宽高:
width = right - left
height = bottom - top
在Android的坐标系方向是右和下分别为x轴和y轴的正方向。
二、X, Y, TranslationX, TranslationY
从Android3.0开始,View增加了额外的几个参数:x,y,translationX,translationY,其中x,y是View的左上角坐标,而translationX,translationY是View左上角相对于父容器的偏移量。也是相对坐标,其中translationX,translationY的默认值是0,View也为它们提供了get/set方法。
x = left + translationX
y = top + translationY
三、EventMotion 的getX()和getRowX()
getRowX:触摸点相对于屏幕的坐标
getX: 触摸点相对于按钮的坐标
getTop: 按钮左上角相对于父view(LinerLayout)的y坐标
getLeft: 按钮左上角相对于父view(LinerLayout)的x坐标
可以想象 getRight()等同于下面的计算:getLeft()+getWidth()。
getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理
四、getScrollX()
就是当前view的左上角相对于母视图的左上角的X轴偏移量