Update 坐标系.md

This commit is contained in:
sloop
2016-01-05 17:16:44 +08:00
parent 907f9ca926
commit 2b110765d3

View File

@@ -1,3 +1,38 @@
# 安卓中的坐标系
由于移动设备一般定义屏幕左上角为坐标原点向右为x轴增大方向向下问y轴增大方向所以在手机屏幕上的坐标系数学上一般的坐标系是稍微有点差别的,详情加下图。
## 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顶部的距离
getBottom(); //获取子View底部距父View底部的距离
getLeft(); //获取子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%BB2.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)