Android屏幕、坐标系、Padding、Margin

今天药忘吃喽~ 2022-09-13 04:06 211阅读 0赞

一、屏幕

在这里插入图片描述

二、坐标系分类

1、屏幕坐标系

该坐标系是以屏幕的左上角为原点(0, 0), 水平向右代表 x 方向的正方向, 垂直向下代表 y方向的正方向。而触控事件中,使用getRawX()和getRawY()方法。获取的坐标就是以这个坐标系为标准下的坐标值。
在这里插入图片描述
2、布局坐标系

该坐标系是以 viewgroup 的左上角为坐标原点, 水平向右代表 x 方向的正方向, 垂直向下代表 y 方向的正方向,view 的坐标是在 layout 布局过程中做确定的。也就是view在viewgroup中的位置

3、视图坐标系(相对于父容器)

视图坐标系是以父视图的左上角为坐标原点的,它描述的是子视图在父视图中的位置。
相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

在这里插入图片描述

三、获取坐标

图中有三个黑色的框框,最外层的是手机屏幕,中间层的是ViewGroup,最内层的是ViewGroup中放置的view。
在这里插入图片描述
1、View提供的获取的坐标以及距离的方法(相对于父容器的坐标)

  1. View.getTop() 获取到的是view自身的顶边到其父布局顶边的距离
  2. View.getLeft() 获取到的是view自身的左边到其父布局左边的距离
  3. View.getRight() 获取到的是view自身的右边到其父布局左边的距离
  4. View.getBottom() 获取到的是view自身底边到其父布局顶边的距离
  5. 这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移操作并不会改变着四个方法的返回值。
  6. View.getX() 获取的是View左上角相对于父容器的坐标X
  7. View.getY() 获取的是View左上角相对于父容器的坐标Y
  8. View.getTranslationX() View左上角相对于父容器的X偏移量 translationX = getX() - getLeft() View未发生平移操作时,translationX translationY都为0
  9. View.getTranslationY() View左上角相对于父容器的Y偏移量
  10. View.getLocationOnScreen(int[] position) 获取View相对于整个屏幕的坐标
  11. View.getLocationInWindow(int[] position) 获取View相对于Window的坐标(忽略状态栏及ActionBar

view
又增加了一些关于 view 的属性(x, y): 标示 view 左上角的坐标, 其值为:x和y默认为0
x = mleft + tranlationX
y = mtop + tranlationY
translationX, translationY: 表示 view 位置的偏移量(相对于原位置), 初始值为0
该坐标系主要用在 view 的动画操作上面,这样可以控制view整个内容的偏移

2、MotionEvent提供的方法(获取用户点击点坐标)

  1. getX() 获取点击事件距离当前View左边的距离,即视图坐标
  2. getY() 获取点击事件距离当前View顶边的距离,即视图坐标
  3. getRawX() 获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标
  4. getRawY() 获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

在这里插入图片描述

四、Padding和Margin

在这里插入图片描述

  1. getPaddingLeft(): View里的content距离View左边缘的距离
  2. getPaddingTop(): View里的content距离View上边缘的距离
  3. getPaddingRight(): View里的content距离View右边缘的距离
  4. getPaddingBottom():View里的content距离View下边缘的距离

发表评论

表情:
评论列表 (有 0 条评论,211人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android 屏幕显示

    Andriod之所以能够显示千变万化,绚丽多姿的界面,归根结底是由于数百万乃至更多的像素的组合排列。如果没有对像素单位有足够的了解,那么我们开发出来的程序很有可能只能在模拟器里