Android 自定义 View 之 Android 坐标系统


在真正的学习 Android 自定义 View之前, 我们先来了解一下 Android 的坐标系相关知识.
android 开发交流群: 190088567

一. 坐标系分类:
Android 中的坐标系可以分为三类: 屏幕坐标系, 布局坐标系, 以及视图坐标系.

  1. 屏幕坐标系: 该坐标系是以屏幕的左上角为原点(0, 0), 水平向右代表 x 方向的正方向, 垂直向下代表 y方向的正方向, 如下图所示:
  2. 布局坐标系: 该坐标系是以 view 的左上角为坐标原点, 水平向右代表 x 方向的正方向, 垂直向下代表 y 方向的正方向, view 的坐标原点是在 layout 布局过程中做确定的.
  3. 视图坐标系: 该坐标系是在 view 绘制过程中, 绘制的内容将该坐标系作为参考, 来绘制 view.我们可以看下下面的这张图片:

二. view 当中的方法:

  1. getTop():获取 view 本身顶部到父容器 ViewGroup 顶部的距离.
  2. getBottom(): 获取 view 本身底部到父容器 ViewGroup 顶部的距离.(注意这里是ViewGroup顶部)
  3. getLeft(): 获取 view 本身左侧到父容器 ViewGroup 左侧的距离.
  4. getRight(): 获取 view 本身右侧到父容器 ViewGroup 左侧的距离.(这里是ViewGroup左侧)
    上面的几个方法所得到的值都是相对于父容器的, 而不是整个屏幕.
  5. offsetLeftAndRight(int offset): 水平方向移动view, offset 为正则向右移动, offset 为负则向左移动
  6. offsetTopAndBottom(int offset): 垂直方向移动view, offset 为正则向下移动, offset 为负则向右移动
    上面两个方法中对应的 getLeft() 和 getTop() 返回的值会改变

在 Android3.0以后 view 又增加了一些关于 view 的属性:

  1. x, y: 标示 view 左上角的坐标, 坐标系是父 view 的视图坐标, 其值为:

    1
    2
    x = mleft + tranlationX
    y = mtop + tranlationY
  2. translationX, translationY: 表示 view 位置的偏移量, 初始值为0
    该坐标系主要用在 view 的动画操作上面, 在后续的文章中会详细介绍 android 中的动画

三. MotionEvent当中的方法:(假设图片中的小点就是我们手指触摸在手机屏幕中的位置)

  1. getY(): view 本身顶部距离父容器顶部的距离
  2. getX(): view 本身左侧距离父容器左侧的距离
  3. getRawX(): view 本身左侧距离手机屏幕左侧的距离
  4. getRawY(): view 本身顶部距离手机屏幕顶部的距离

前两个方法是相对于父容器而言的, 后两个方法是相对于整个屏幕而言的, 这个地方不要弄混了

Android 中的坐标系相关知识是自定义 View 中的基础知识, 也是为后续的学习做铺垫, 本节内容相对来说也比较简单, 不明白的地方可以留言或者加群(190088567),下篇文章我们将详细讲解 View 中的 Paint 相关知识.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM