Android的自定义View的坐标系

来源:互联网 发布:qq关系数据库 编辑:程序博客网 时间:2024/05/17 22:50

最近正在学习自定义View,因为每次我们的开发时,毕竟我们所有的UI控件都不是拿来就用的,虽然很多开源的库,但是也不是都可以满足我们的需求,即使有本人认为不爱动手写的程序员不是合格的程序猿。近期查阅了很多度娘,整理了一些经验和内容,希望今天拿来View的坐标系与大家分享一哈。

1、Android屏幕坐标系

首先我们我们先说一下数学坐标系
通常情况下数学坐标系中向上是Y轴正方向,向右是X轴正方向

(注意:a角是数学坐标系的表现)

这里写图片描述

在Android屏幕的坐标系中,原点在屏幕的左上角,向下为Y轴正方向,向右是X轴正方向

(注意:a角是Andorid坐标系的表现)
这里写图片描述

屏幕上真正的坐标系如下图所示:

这里写图片描述

2、View的坐标系

首先在解释一下View的getTop、getBottom、getLeft、getRight;
都是距离父布局的顶部或者左侧的距离

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

这里写图片描述

3、触摸点MotionEvent中 get 和 getRaw 的区别

event.getX();       //触摸点相对于其所在组件坐标系的坐标,也就是View的坐标系event.getY();event.getRawX();    //触摸点相对于屏幕默认坐标系的坐标,(注:不是相对于父布局来说的)event.getRawY();

这里写图片描述

参考http://www.gcssloop.com/customview/CoordinateSystem