Android获取坐标细则

本文详细探讨了Android中的坐标系统,包括View相对坐标、View的宽高计算、在布局和触摸事件中的坐标应用,以及View的平移、滑动、旋转等操作。通过getX(), getY(), getRawX(), getRawY()等方法解析了View在不同场景下的坐标获取,还介绍了getTranslationX(), getTranslationY(), getLocalVisibleRect(), getGlobalVisibleRect(), getLocationOnScreen(), getLocationInWindow()等方法的用法,帮助开发者精确掌握View的位置和状态。" 120242479,7414973,Python入门:使用time模块暂停并格式化显示时间,"['Python', '基础教程', 'time模块']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android坐标系:

x轴向右,y轴向下,z轴向上

View相对坐标
  1. getTop()
    View的上离x轴方向父布局的距离
  2. getLeft()
    View的左离y轴方向父布局的距离
  3. getBottom()
    View的下离x轴方向父布局的距离
  4. getRight()
    View的右离y轴方向父布局的距离

注:这四个方法获取的坐标表示的是 View 原始状态时相对于父容器的坐标,对 View 进行平移操作并不会改变着四个方法的返回值。

View的宽高方法
  1. getWidth() = getRight() - getLeft()
  2. getHeight() = getBottom() - getTop()
  3. getMeasuredWidth()返回measure过程得到的mMeasuredWidth值
  4. getMeasuredHeight()返回measure过程得到的mMeasuredHeight值
getX()、getY()、getRawX()、getRawY()
在View布局中的应用
  1. getX()
    View的左上角离x轴方向父布局的距离
  2. getY()
    View的左上角离y轴方向父布局的距离
在OnTouchEvent()
  1. getX()
    触摸点离x轴方向父布局的距离
  2. getY()
    触摸点离y轴方向父布局的距离
  3. getRawX()
    触摸点离x轴的距离
  4. getRawY()
    触摸点离y轴的距离
View.getTranslationX()、View.getTranslationY()
  1. View.getTranslationX() = getX() - getLeft()
    View 左上角x轴方向相对于父容器的偏移量
  2. View.getTranslationY() = getY() - getTop()
    View 左上角y轴方向相对于父容器的偏移量
getLocalVisibleRect()、getGlobalVisibleRect()
  1. getLocalVisibleRect()
    获取View自身可见区域的矩形坐标,坐标点基于左上角
  2. getGlobalVisibleRect()
    获取View自身可见区域的矩形坐标,坐标点基于原点(0,0)
getLocationOnScreen()、getLocationInWindow()
  1. getLocationOnScreen()
    获取View的左上角的坐标,基于屏幕原点(0,0)
  2. getLocationInWindow()
    获取View的左上角的坐标,基于Window
    注:普通的activity同getLocationOnScreen(),存在Dialog的window则不同于getLocationOnScreen()
View滑动相关坐标

特别注意:View的scrollTo()和scrollBy()是用于滑动View中的内容,而不是改变View的位置;改变View在屏幕中的位置可以使用offsetLeftAndRight()和offsetTopAndBottom()方法,他会导致getLeft()等值改变。

  1. scrollTo(int x, int y)
    将View中内容(不是整个View)滑动到相应的位置,坐标基于父布局左上角
  2. scrollBy(int x, int y)
    在scrollTo()的基础上继续滑动xy
  3. setScrollX(int value)
    实质为scrollTo(),只是只改变Y轴滑动
  4. setScrollY(int value)
    实质为scrollTo(),只是只改变X轴滑动
  5. getScrollX()/getScrollY()
    获取当前滑动后的位置(即是scrollTo()的x参数)
  6. offsetLeftAndRight(int offset)
    水平方向挪动View
  7. offsetTopAndBottom(int offset)
    垂直方向挪动View
旋转及设置锚点

View.setRotation(float rotation)
设置旋转的角度(沿z轴旋转)
View.setPivotX(float pivotX)
设置锚点的X坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。
View.setPivotX(float pivotX)
设置锚点的Y坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值