Files
AndroidNote/CustomView/Base/[01]CoordinateSystem.md

68 lines
2.3 KiB
Markdown
Raw Normal View History

2016-01-05 16:48:42 +08:00
# 安卓中的坐标系
2016-03-23 21:41:39 +08:00
### 作者微博: [@GcsSloop](http://weibo.com/GcsSloop)
2016-07-23 19:00:03 +08:00
### [【本系列相关文章】](https://github.com/GcsSloop/AndroidNote/tree/master/CustomView/README.md)
2016-03-23 21:44:02 +08:00
2016-03-23 21:41:39 +08:00
2016-03-10 18:16:33 +08:00
## 一.屏幕坐标系和数学坐标系的区别
2016-03-10 00:28:42 +08:00
由于移动设备一般定义屏幕左上角为坐标原点向右为x轴增大方向向下为y轴增大方向
所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的,详情如下:
2016-01-05 17:16:44 +08:00
2016-03-09 21:45:23 +08:00
**PS其中的∠a 是对应的注意y轴方向**
2016-03-09 22:00:31 +08:00
![](http://ww2.sinaimg.cn/large/005Xtdi2jw1f1qygzfvhoj308c0dwglr.jpg)
![](http://ww1.sinaimg.cn/large/005Xtdi2jw1f1qyhbqvihj308c0dwjrh.jpg)
2016-03-09 21:45:23 +08:00
2016-03-10 00:16:10 +08:00
**实际屏幕上的默认坐标系如下:**
2016-03-09 21:45:23 +08:00
2016-03-10 00:17:47 +08:00
> PS: 假设其中棕色部分为手机屏幕
2016-03-09 22:00:31 +08:00
![](http://ww3.sinaimg.cn/large/005Xtdi2jw1f1qyhjy7h8j308c0dwq32.jpg)
2016-01-05 17:16:44 +08:00
2016-03-10 18:16:33 +08:00
## 二.View的坐标系
2016-01-05 17:16:44 +08:00
2016-03-10 00:05:58 +08:00
**注意View的坐标系统是相对于父控件而言的.**
2016-01-05 17:16:44 +08:00
``` java
2016-01-09 16:31:58 +08:00
getTop(); //获取子View左上角距父View顶部的距离
getLeft(); //获取子View左上角距父View左侧的距离
getBottom(); //获取子View右下角距父View顶部的距离
getRight(); //获取子View右下角距父View左侧的距离
2016-01-05 17:16:44 +08:00
```
2016-03-10 00:16:10 +08:00
**如下图所示:**
2016-01-05 17:16:44 +08:00
2016-03-09 22:42:59 +08:00
![](http://ww2.sinaimg.cn/large/005Xtdi2gw1f1qzqwvkkbj308c0dwgm9.jpg)
2016-01-05 17:16:44 +08:00
2016-03-10 18:16:33 +08:00
## 三.MotionEvent中 get 和 getRaw 的区别
2016-01-05 17:16:44 +08:00
```
2016-03-10 00:05:58 +08:00
event.getX(); //触摸点相对于其所在组件坐标系的坐标
event.getY();
event.getRawX(); //触摸点相对于屏幕默认坐标系的坐标
event.getRawY();
2016-01-05 17:16:44 +08:00
```
2016-03-10 00:16:10 +08:00
**如下图所示:**
2016-03-10 00:05:58 +08:00
> PS:其中相同颜色的内容是对应的,其中为了显示方便,蓝色箭头向左稍微偏移了一点.
2016-01-05 17:18:23 +08:00
2016-03-10 00:12:30 +08:00
![](http://ww1.sinaimg.cn/large/005Xtdi2jw1f1r2bdlqhbj308c0dwwew.jpg)
2016-01-05 17:16:44 +08:00
2016-03-10 18:16:33 +08:00
## 四.核心要点
2016-03-09 14:33:03 +08:00
序号 | 要点
:---:|----
1 | 在数学中常见的坐标系与屏幕默认坐标系的差别
2016-03-10 00:37:41 +08:00
2 | View的坐标系是相对于父控件而言的
2016-03-10 00:12:30 +08:00
3 | MotionEvent中get和getRaw的区别
2016-03-09 14:33:03 +08:00
2016-03-10 18:16:33 +08:00
## 五.参考文章:
2016-01-05 17:16:44 +08:00
[Android 屏幕View坐标系统](http://blog.csdn.net/wangjinyu501/article/details/21827341)
2016-03-09 14:33:03 +08:00
## About Me
2016-03-11 12:33:43 +08:00
### 作者微博: <a href="http://weibo.com/GcsSloop" target="_blank">@GcsSloop</a>
2016-08-16 02:57:27 +08:00
<a href="http://www.gcssloop.com/1970/01/about/" target="_blank"> <img src="http://ww4.sinaimg.cn/large/005Xtdi2gw1f1qn89ihu3j315o0dwwjc.jpg" width=300/> </a>
2016-01-05 17:16:44 +08:00