# 安卓中的坐标系
### 作者微博: [@攻城师sloop](http://weibo.com/5459430586)

## 1.屏幕坐标系和数学坐标系的区别
由于移动设备一般定义屏幕左上角为坐标原点，向右为x轴增大方向，向下为y轴增大方向，所以在手机屏幕上的坐标系与数学上一般的坐标系是稍微有点差别的，详情加下图。

（PS：其中的数字表示象限，角a 是相互对应的，注意y轴方向）
![坐标系](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/%E5%9D%90%E6%A0%87%E7%B3%BB/Art/%E5%9D%90%E6%A0%87%E7%B3%BB.png)

实际是在屏幕上的坐标系如下：
![](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/%E5%9D%90%E6%A0%87%E7%B3%BB/Art/%E5%9D%90%E6%A0%87%E7%B3%BB1.png)

## 2.中View的坐标系
> (由于画图太艰难了，所以以下图片来源于网络，具体请看末尾链接)：

#### 注意：View的坐标系统是相对于父控件而言的

``` java
  getTop();       //获取子View左上角距父View顶部的距离
  getLeft();      //获取子View左上角距父View左侧的距离
  getBottom();    //获取子View右下角距父View顶部的距离
  getRight();     //获取子View右下角距父View左侧的距离
```
具体可如下图所示：

![](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/%E5%9D%90%E6%A0%87%E7%B3%BB/Art/%E5%9D%90%E6%A0%87%E7%B3%BB5.png)

### MotionEvent中 getRowX() 和 getX() 的区别
```
    event.getRowX();    //触摸点相对于屏幕原点的x坐标
    event.getX();       //触摸点相对于其所在组件原点的x坐标
```
具体如下图所示：

![](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/%E5%9D%90%E6%A0%87%E7%B3%BB/Art/%E5%9D%90%E6%A0%87%E7%B3%BB4.gif)

## 3.参考文章：
[Android 屏幕（View）坐标系统](http://blog.csdn.net/wangjinyu501/article/details/21827341)


