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

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

 

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


posted @ 2016-05-12 17:26  行走的思想  阅读(12)  评论(0编辑  收藏  举报  来源