Android 坐标系与视图坐标系图解分析

 更新时间:2017年03月13日 11:08:54   投稿:jingxian  
下面小编就为大家带来一篇Android 坐标系与视图坐标系图解分析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1. Android坐标系

在Android中,将屏幕的最左上角顶点作为Android坐标系的原点

从原点向右是X轴的正方向,从原点向下是Y轴的正方向

View提供了getLocationOnScreen( int[] location)方法来获取在整个屏幕内的绝对坐标,该坐标值为View左上角的坐标。注意该View的坐标值是从屏幕左上角开始获取的,所以也包括了通知栏的高度

该方法的具体实现

/**
   * <p>Computes the coordinates of this view on the screen. The argument
   * must be an array of two integers. After the method returns, the array
   * contains the x and y location in that order.</p>
   *
   * @param location an array of two integers in which to hold the coordinates
   */
  public void getLocationOnScreen(@Size(2) int[] location) {
    getLocationInWindow(location);

    final AttachInfo info = mAttachInfo;
    if (info != null) {
      location[0] += info.mWindowLeft;
      location[1] += info.mWindowTop;
    }
  }

可看到,传入的int[]数组中,location[0]代表的是X轴坐标,location[1]代表的Y轴坐标

这里还有个getLocationInWindow方法,作用是获取View在当前窗口内的绝对坐标

我们在通过MotionEvent类中的getRawX(),getRawY()方法获取的坐标同样也属于这种Android坐标系里的坐标

2. 视图坐标系

Android中的视图坐标系,描述的是子视图与其父视图中的位置关系

和Android坐标系一样,视图坐标系也是以原点向右为X轴正方向,以原点向下为Y轴正方向,与Android坐标系不同的是,视图坐标系的原点是以父视图左上角的位置为原点

如上图中,对于Button来说,父视图LinearLayout左上角就是视图坐标系的原点(0,0)

我们通过MotionEvent类中的getX()、getY()方法所获得的就是视图坐标系的坐标

在Android中,系统提供了很多获取坐标值、相对距离等方法

View提供的API

•getTop():获取View顶边到其父布局顶边的距离

•getLeft():获取View左边到其父布局左边的距离

•getRight():获取View右边到其父布局左边的距离

•getBottom():获取View底边到其父布局顶边的距离

MotionEvent提供的API

• getX():获取点击位置离View左边的距离

• getY():获取点击位置离View顶边的距离

• getRawX():获取点击位置离屏幕左边的距离

• getRawY():获取点击位置离屏幕顶边的距离

以上这篇Android 坐标系与视图坐标系图解分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android编程实现动态更新ListView的方法

    Android编程实现动态更新ListView的方法

    这篇文章主要介绍了Android编程实现动态更新ListView的方法,结合实例形式详细分析了ListView的布局及动态更新实现方法,需要的朋友可以参考下
    2016-02-02
  • Android Git submodule详解用法示例

    Android Git submodule详解用法示例

    项目中经常会使用到第三方的 git 库, 将三方库整合到项目中最简单的办法就是复制粘贴, 但是如果这个库升级了一个很酷炫的功能, 你要怎么整合进来呢?(其实就是 git 版的包管理器)这就是本次要介绍的 git-submodule 操作, 直接把第三方的版本库合并到自己的库中
    2021-11-11
  • Android消息个数提醒控件使用详解

    Android消息个数提醒控件使用详解

    这篇文章主要为大家详细介绍了Android消息个数提醒控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android自定view画圆效果

    Android自定view画圆效果

    这篇文章主要为大家详细介绍了Android自定view画圆效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • android studio的Handler简单实例代码

    android studio的Handler简单实例代码

    今天通过实例代码给大家介绍android studio的Handler简单用法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-10-10
  • Java4Android开发教程(一)JDK安装与配置

    Java4Android开发教程(一)JDK安装与配置

    本文是Android开发系列教程的第一篇,主要为大家带来的是开发环境的准备工作,JDK安装与配置图文教程,非常的详细,有需要的朋友可以参考下
    2014-10-10
  • 使用Composing builds提升Android编译速度

    使用Composing builds提升Android编译速度

    这篇文章主要介绍了使用Composing builds提升Android编译速度示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • WorkManager解决应用退出后继续运行后台任务

    WorkManager解决应用退出后继续运行后台任务

    这篇文章主要为大家介绍了WorkManager解决应用退出后继续运行后台任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 实例详解Android文件存储数据方式

    实例详解Android文件存储数据方式

    总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。下面通过本文给大家介绍Android文件存储数据方式,对android文件存储数据相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Android获取手机联系人列表的方法

    Android获取手机联系人列表的方法

    这篇文章主要为大家详细介绍了Android获取手机联系人列表的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10

最新评论