[日期:2015-11-22] 来源:Linux社区  作者:fuly550871915

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()  获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-11/125391.htm

Android中的坐标系以及获取坐标的方法相关推荐

  1. android集合方法,android中intent传递list或者对象的方法

    本文实例讲述了android中intent传递list或者对象的方法.分享给大家供大家参考.具体实现方法如下: 方法一: 如果单纯的传递List 或者List的话 就可以直接使用 代码如下: inte ...

  2. sdk数值与android版本,Android SdkVersion的区别及获取版本信息方法

    1.minSdkVersion,targetSdkVersion,maxSdkVersion,compileSdkVersion四个数值之间有什么区别? • minSdkVersion,maxSdkV ...

  3. android 退出多个activity,Android 中 退出多个activity的经典方法

    1.使用list集合方式 用list保存activity实例,然后逐一干掉 import java.util.linkedlist; import java.util.list; import and ...

  4. android onclick方法吗,Android中button的onClick事件几种方法

    Android中button的onClick事件几种方法 发布时间:2020-09-03 02:36:31 来源:脚本之家 阅读:100 作者:水桶前辈 Android中button的onClick事 ...

  5. android draw canvas,Android 中View.onDraw(Canvas canvas)的使用方法

    Android 中View.onDraw(Canvas canvas)的使用方法 View通过View.onDraw(Canvas canvas)来Draw. 我们可以定义自己的继承于View的Tes ...

  6. android中TextView中文字体粗体的方法 (android:textStyle=bold)

    android中TextView中文字体粗体的方法 (android:textStyle="bold"来使字体显示为粗体,但是这只对英文有效) TextView在xml中可以定义a ...

  7. android 获取全局context,说说 Android 中如何在全局获取 Context

    Android 提供了一个 Application 类,每当应用启动时,系统就会初始化该类.我们可以定制一个基础的 Application 类,以便管理应用内的一些全局信息. 定义 BaseAppli ...

  8. 从源码解析-Android中View的绘制流程及performTraversals方法

    谈谈Activity的setContentView是怎么加载XML视图的 谈谈Activity的View怎么与View绘制工具ViewRootImpl关联的 在前面两篇文章中分析了View是如何跟绘制 ...

  9. Android中使用Post带参数请求的方法

    本文实例讲述了Android中使用Post请求的方法.分享给大家供大家参考.具体如下: 一.需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中 ...

最新文章

  1. ASP.NET Get和Post两种提交的区别
  2. 【PHP7源码分析】PHP7到底有多快,基准测试与特性分析告诉你
  3. python创意小作品代码-Python学习,给自己的代码做个合集,定制自己的桌面软件!...
  4. mfc socket onreceive函数不被调用_不报错地调用空指针类的成员函数
  5. Google 工作 4 年,我最终还是选择了离开
  6. jQuery插件实例二:年华时代插件ReturnTop回到首页
  7. Pravega Flink Connector Table API 进阶功能探秘
  8. android3种播放视频方式,Android 两种方式播放视频
  9. 645.错误的集合(力扣leetcode) 博主可答疑该问题
  10. 以太坊之最全攻略解析与案例分享
  11. 链接Maya和UE4实现real-time预览——Connecting Maya to Unreal with Live Link
  12. Moneybookers支付方式开发
  13. 爱情在手机中升华-致我最亲爱的你们
  14. Unbox failed! RequestError: Error: connect ETIMEDOUT 151.101.76.133:443
  15. 经验总结|一个移动端数据产品的设计思路
  16. layUI laydate 时间选择器近一天、近一月、近三月、近一年
  17. 实验七 Oracle数据库安全管理
  18. aiku大神归来!送给初学者嵌入式项目实战开发
  19. 阿里yum源与华为yum源的配置
  20. ns-3构建简单点对点网络

热门文章

  1. 对spring cloud config的一点理解
  2. Object类-try-catch-finally-throw-throws-自定义异常
  3. iOS:app直播---采集篇
  4. ZOJ1027 Travelling Fee(DP+SPFA)
  5. 网页设计入门--表格
  6. c++的ORM解决方案 -- ODB
  7. DIRECTORY_SEPARATOR 和 PATH_SEPARATOR
  8. linux内核定义注册设备,linux字符型设备驱动 一.注册设备并创建设备文件
  9. php常用插件,关于PHP网站编程中常用插件的使用——w3cdream|前端学习-开发
  10. npm run dev 后dist 被情况_npmamp;npxamp;nvmamp;yarn 介绍