Android 一个小例子理解实际开发中坐标计算的过程
今天阅读源码时遇到一个计算坐标的梗了,一时之间没看懂为何这么计算,最后通过自己的计算才理解,Google把源码写的越来越抽象了,理解起来也是越来越伤脑细胞了,下面通过一个简单计算坐标的例子来熟悉下;
上图显示元素说明:
白色区域是手机屏幕,黄色区域是一个ViewGroup,紫色区域是ViewGroup里面嵌套的一个View
情景1:已知黄色区域的(X1,Y1)和(X2,Y2)坐标,如何计算黄色区域的中心点坐标?
计算坐标:
黄色区域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:
已知黄色区域的(X1,Y1)和(X2,Y2)坐标,和紫色区域的宽度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
有了坐标,从哪里绘制也就知道了
上述例子很简单,主要是了解计算坐标的过程。