Android 屏幕坐标/视图坐标/布局坐标三者间的关系

  1. 屏幕坐标:以屏幕左上方为(0,0)的坐标体系,X/Y轴的最大值即为物理屏幕分辨率的宽和高;
    触摸消息中MotionEvent.getX/getY取到的就是屏幕坐标值;
  2. 视图坐标:视图坐标是完全由视图内容的宽高决定的坐标体系,理论上他是没有边界的,不受物理屏幕大小限制;
    比如1000行的文本限定宽度为100px,每行高度为5px,那对应的X/Y最大坐标值为(100,5000);
  3. 布局坐标:子视图相对于父视图而言的相对屏幕坐标,以父视图的左上角为(0,0),而不关心父视图到底位于屏幕何处,X/Y最大坐标值为父视图的width/height;对于子视图而言,若内容过多,超过父视图分配的区域大小将由部分内容不能显示,此时就会出现滚动条,视图坐标=布局坐标+mScrollX/mScrollY;
    View体系下的getX/getY/getTop/getBottom/getLeft/getRight都是指的布局坐标;
    子视图的屏幕坐标=子视图的布局坐标+父视图的屏幕坐标;对于视图坐标和布局坐标两者之间可以进行转换,具体可以参见下图的事例,注意:空白区域不计尺寸,只是为了更明确的演示而已

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值