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 @   行走的思想  阅读(13)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示