View系列 (一) — Android 坐标系

一、概述

Android 中 View 分为两种类型,一种为内部可以包含其它子 View 的 ViewGroup 类型,另一种内部不可以再包含其它子 View 的 View 类型。

一个页面上的元素大致如下图所示:
在这里插入图片描述

类型控件
View:TextViewButtonImageView 等。
ViewGroup:LinearLayoutFrameLayoutRelativeLayout 等。

关联文章:

  1. 《View系列 (一) — Android 坐标系》
  2. 《View系列 (二) — MeasureSpec 详解》
  3. 《View系列 (三) — Measure 流程详解》
  4. 《View系列 (四) — Layout 流程详解》
  5. 《View系列 (五) — Draw 流程详解》
  6. 《Window系列 (一) — WindowManager 详解》

二、坐标系

Android 系统中有两种坐标系, 分别为 Android坐标系View坐标系

1. Android 坐标系

说明:

  1. 坐标原点:屏幕左上角(红点处)。
  2. X轴正方向:向右
  3. Y轴正方向:向下
  4. 触摸事件中,getRawX() 和 getRawY() 方法获得的坐标也是Android坐标系的坐标。

在这里插入图片描述

2. View 坐标系

在这里插入图片描述
获得 View 控件到其父控件(ViewGroup) 的距离:

  1. getTop(): 获取 View 自身顶边到其父布局顶边的距离。
  2. getLeft():获取 View 自身左边到其父布局左边的距离。
  3. getRight(): 获取 View 自身右边到其父布局左边的距离。
  4. getBottom():获取 View 自身底边到其父布局顶边的距离。

获取View控件自身的宽度:

width = getRight() - getleft()

获取View控件自身的高度:

height = getBottom() - getTop()

触摸事件中,MotionEvent 提供的获取坐标的方法:

  1. getX():获取点击事件距离控件自身左边的距离, 即视图坐标。
  2. getY():获取点击事件距离控件自身顶边的距离, 即视图坐标。
  3. getRawX() :获取点击事件距离整个屏幕左边的距离, 即绝对坐标。
  4. getRawY() :获取点击事件距离整个屏幕顶边的距离, 即绝对坐标。

三、控件的绘制流程

View 的绘制是从上往下一层层迭代下来的。DecorView --> ViewGroup(-->ViewGroup)--> View ,按照这个流程从上往下,依次measure()layout()draw(),最终计算出整个 View 树的相关属性。流程分析请看 《Window系列 (一) — WindowManager 详解》
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值