android中有两种坐标系,分别称之为Android坐标系和视图坐标系。而对应的也有一些相关的方法可以获取坐标系中的

坐标值。只有搞清楚这些区别,才能在实现的时候不至于出错或者得不到你想要的效果。

一、Android坐标系和视图坐标系

(1)Android坐标系

先来看一看Android坐标系是个什么样子的。贴一张图来说明,如下:

如上图所示,Android坐标系以手机屏幕左上角的顶点为坐标原点,从该点向右为x轴正方向,从该点向下为y轴正方向。而触控事件中,使用getRawX()和getRawY()方法

获取的坐标就是以这个坐标系为标准下的坐标值。

(2)视图坐标系

android中的另外一个坐标系叫做视图坐标系,它描述的是子视图在父视图中的位置。再贴一张图来说明,如下:

如上图所示,视图坐标系是以父视图的左上角为坐标原点的。相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过

getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

二、获取坐标值以及相对距离的那些方法

在android中,提供了非常丰富的方法来获得坐标值和相对距离。但是在使用这些方法的时候,一定要清楚是以哪个坐标系为标准来获取的。

为了将这些方法一一说明清楚,我也准备了一张图,如下:

上面的那张图很好的说明了每个方法获得的坐标值或者距离都是从哪里到哪里的。说明一下,图中有三个黑色的框框,最外层的是手机屏幕,

中间层的是ViewGroup,最内层的是ViewGroup中放置的view。

其实上图中标注的方法可以分为两类,一类是View提供的方法,一类是MotionEvent提供的方法。分别说明如下:

View提供的获取的坐标以及距离的方法:

getTop()           获取到的是view自身的顶边到其父布局顶边的距离

getLeft()           获取到的是view自身的左边到其父布局左边的距离

getRight()        获取到的是view自身的右边到其父布局左边的距离

getBottom()     获取到的是view自身底边到其父布局顶边的距离

MotionEvent提供的方法:

getX()       获取点击事件距离控件左边的距离,即视图坐标

getY()       获取点击事件距离控件顶边的距离,即视图坐标

getRawX()  获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标

getRawY()  获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

最新文章

  1. ES5 的 forEach, map, filter, some, every 方法
  2. centos 安装maven
  3. 深入浅出数据分析 Head First Data Analysis Code 数据与代码
  4. SSH应该使用密钥还是密码?
  5. hadoop-streaming 配置之---参数分割
  6. win8 + ubuntu14.04 安装步骤
  7. java读取配置文件的几种方法
  8. 6天通吃树结构—— 第五天 Trie树
  9. 【原创】python中文编码问题深入分析(二):print打印中文异常及显示乱码问题分析与解决
  10. JS的事件模型
  11. 用servlet验证密码2
  12. CSS样式内容
  13. LightOJ - 1074 Extended Traffic(标记负环)
  14. 阅读<Video Test Pattern Generator v7.0>笔记
  15. [MAC OS] 常用工具
  16. 170517、Redis 的安装与使用(单节点)
  17. php 函数__autoload与spl_autoload_register理解
  18. 微信小程序:WXML 模板
  19. Struts2中的包的作用描述
  20. 关于 JavaScript 学习 —— 好的博客或者网站推荐

热门文章

  1. Direct2D开发:纹理混合
  2. webpack实战
  3. Dancing Link --- 模板题 HUST 1017 - Exact cover
  4. 重构if...else...或者switch程序块
  5. 可访问性级别的C# 修饰符
  6. windbg sos加载相关
  7. python输出excel能够识别的utf-8格式csv文件
  8. C语言范例学习01
  9. .NET Core 和 ASP.NET 5 RC1 发布
  10. ASP.NET Web API 数据提供系统相关类型及其关系