Android 一个小例子理解实际开发中坐标计算的过程
来源:互联网 发布:卓讯云客宝类似软件 编辑:程序博客网 时间:2024/06/08 06:17
今天阅读源码时遇到一个计算坐标的梗了,一时之间没看懂为何这么计算,最后通过自己的计算才理解,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
有了坐标,从哪里绘制也就知道了
上述例子很简单,主要是了解计算坐标的过程。
- Android 一个小例子理解实际开发中坐标计算的过程
- android中一个流氓的小例子
- 通过一个实际的例子学习SQLServer存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习Oracle存储过程
- 通过一个实际的例子学习SQLServer存储过程
- 算法理解-遗传算法(Genetic Algorithm)(一个带计算过程的例子)
- IOS 小例子,输出一个图形的坐标,颜色,形状。
- 接口理解的一个小例子
- 使用存储过程的一个小例子
- 理解面向对象和面向过程区别的一个小例子。
- 一个二叉排序树的实际例子
- Android中关于ExpandableListView用法的一个简单小例子
- 小心 android:hardwareAccelerated="true" 内存迅速提高
- How to create coupon codes in Magento – Beginner’s Tutorial
- AngularJs模块化指令03(点赞)
- Flink中的一些核心概念
- Cat 安装(二)
- Android 一个小例子理解实际开发中坐标计算的过程
- 途牛原创|大话权限中心的PHP架构之道
- 使用nginx搭建http代理服务器
- Spring Boot 入门学习(1)
- 排序+自己保存在路径里
- 选择排序1到10000
- 深入理解Java:注解(Annotation)自定义注解入门
- 欢迎使用CSDN-markdown编辑器
- 利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析