获取View的坐标和各种距离

自定义控件离不开获取View的各种坐标数据,之前一直掌握的零零碎碎不系统,现在看了一篇刘望舒的博客豁然开朗讲的很好,并且自己也动手测试了一下,感觉很清晰,现在来记录分享一下,毕竟纸上得来终觉浅,绝知此事要躬行嘛:


图1:手机屏幕的布局

图2:对手机屏幕布局的图示

Android系统的坐标系和普通的数学坐标系有点不一样,主要是Y轴的正方向向下,有点颠覆传统的认识,废话不多说,先看怎么获取各项数据吧,这里为了演示方便,统一只获取X轴反方向上的数据。

获取各种子View到其直接父View的距离,比如图示2中的A和C:

A=粉色View.getLeft();
C=红色View.getLeft();

获取各种View到屏幕边框的距离,即在Android坐标系中的坐标,比如B:

B=event.getRawX();//这个方法需要在onTouch里面使用,因为是由MotionEvent提供的

获取手指点击的位置到被点击的View的距离,比如D:

D=event.getX();//同样,这个方法也需要在onTouch里面使用

下面来一发测试数据:

MainActivity: B=712.4414
MainActivity: D=237.4414
MainActivity: C=105
MainActivity: A=370

那么这几种数据有什么关系,是不是一看就清楚的很呢?对,你没有看错:

点击的位置坐标(B)=点击的位置到被点击View的距离(D)+被点击View所有父View到其直接子View的内边距(A,C);

如果想获取View自身的width和height,直接getWidth()和getHeight()就好了,但是需要自己提前测量一下,否则你极有可能获取的是0吆。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值