GcsSloop

Just do IT later.

嗨,我是 GcsSloop,一名来自2.5次元的魔法师,Android自定义View系列文章作者,非著名程序员。


欢迎来到我的魔法世界!

安卓自定义View基础-坐标系

一.屏幕坐标系和数学坐标系的区别

由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向, 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的,详情如下:

PS:其中的∠a 是对应的,注意y轴方向!

数学坐标系 安卓屏幕坐标系

实际屏幕上的默认坐标系如下:

PS: 假设其中棕色部分为手机屏幕

屏幕默认坐标系示例

二.View的坐标系

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

getTop();       //获取子View左上角距父View顶部的距离
getLeft();      //获取子View左上角距父View左侧的距离
getBottom();    //获取子View右下角距父View顶部的距离
getRight();     //获取子View右下角距父View左侧的距离

如下图所示:

View坐标系

三.MotionEvent中 get 和 getRaw 的区别

event.getX();       //触摸点相对于其所在组件坐标系的坐标
event.getY();

event.getRawX();    //触摸点相对于屏幕默认坐标系的坐标
event.getRawY();

如下图所示:

PS:其中相同颜色的内容是对应的,其中为了显示方便,蓝色箭头向左稍微偏移了一点.

get雨getRaw区别

四.核心要点

序号 要点
1 在数学中常见的坐标系与屏幕默认坐标系的差别
2 View的坐标系是相对于父控件而言的
3 MotionEvent中get和getRaw的区别

五.参考文章:


如果你觉得我的文章对你有帮助的话,捐赠一些晶石,鼓励我继续研究!

¥ 捐赠晶石
最近的文章

安卓自定义View基础-角度与弧度

安卓中角度(angle)与弧度(radian)的有关问题。一.前言1.为什么讲这个?在我们自定义View,尤其是制作一些复杂炫酷的效果的时候,实际上是将一些简单的东西通过数学上精密的计算组合到一...…

CustomView

继续阅读
更早的文章

二十多行代码画太极

一个然并卵的自定义View实例,觉得很有趣就做了一个试试,效果看起来貌似还是挺不错的,代码也非常简单。如果想系统的学习自定义View,可以参考: 安卓自定义View教程目录完成效果图技术基础这一...…

CustomView

继续阅读