Android 一个小例子理解实际开发中坐标计算的过程

    今天阅读源码时遇到一个计算坐标的梗了,一时之间没看懂为何这么计算,最后通过自己的计算才理解,Google把源码写的越来越抽象了,理解起来也是越来越伤脑细胞了,下面通过一个简单计算坐标的例子来熟悉下



上图显示元素说明:

白色区域是手机屏幕,黄色区域是一个ViewGroup,紫色区域是ViewGroup里面嵌套的一个View

情景1:已知黄色区域的(X1Y1)和(X2Y2)坐标,如何计算黄色区域的中心点坐标?

 

计算坐标:

黄色区域Rect坐标表示:(X1,Y1,X2,Y2)

黄色区域的大小:宽度Width1=X2-X1 高度Height1=Y2-Y1

黄色区域X轴方向的中心点坐标:

 

计算公式:X1+Width1/2

                 =X1+ (X2-X1)/2

                 =X1+X2/2 -X1/2

                 =X2/2+X1/2

                 =(X2+X1)/2

即:

黄色区域X轴方向的中心点坐标=(X2+X1)/2

同样的原理计算,黄色区域Y轴方向的中心点坐标=(Y2+Y1)/2

黄色区域的中心点坐标公式:( (X2+X1)/2 , (Y2+Y1)/2 )

PS:请记住这个中心点坐标公式 ,常会用到。


这也就Rect.java里面的centerX()和centerY()方法这么表示的原因(右移一位也就是除以2的意思):


 



情景2

已知黄色区域的(X1Y1)和(X2Y2)坐标,和紫色区域的宽度xWidth和高度yheight,如何使紫色区域最终绘制在黄色区域的中心位置?

根据情景1得知:黄色区域的中心点坐标是:( (X2+X1)/2 , (Y2+Y1)/2 )

紫色区域的X3=黄色区域的X轴中心点-紫色区域的宽度/2

             =(X2+X1)/2 - xWidth/2

             =(X2+X1-xWidth) /2

紫色区域的Y3=黄色区域的Y轴中心点-紫色区域的高度/2

             =(Y2+Y1)/2- yheight/2

             =(Y2+Y1-yheight)/2

X4=X3+xWidth

Y4=Y3+yheight

有了坐标,从哪里绘制也就知道了

 

上述例子很简单,主要是了解计算坐标的过程。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值