天天记录 - Android View坐标getLeft, getRight, getTop, getBottom

分类:Android 窗口与View管理 931人阅读 评论(3) 收藏 举报

1 引起疑惑

分析视图invalidate流程的过程中发现view的left, right, top, bottom跟自己理解的不一样,现在想分析一下这几个值具体的含义。

Android View坐标getLeft, getRight, getTop, getBottom

2 理解坐标,位置概念

这里涉及坐标系的概念:

坐标系在二维视图中通过X轴和Y轴两个数字为组合表示某个点的绝对坐标。 例如(30, 100) 通常表示X轴30, Y轴100交叉的一个点

在Android中可以把left相当于X轴值, top相当于Y轴值, 通过这两个值Android系统可以知道视图的绘制起点,在通过Wdith 和 Height 可以得到视图上下左右具体值,就可以在屏幕上绝对位置绘制视图。right 与 bottom计算如下:

right = left + width;

bottom = top + height;

3 相应API

视图左侧位置 view.getLeft()

视图右侧位置 view.getRight()

视图顶部位置 view.getTop();

视图底部位置 view.getBottom();

视图宽度 view.getWidth();

视图高度 view.getHeight()

4 实例分析

Android View坐标getLeft, getRight, getTop, getBottom

按照我的理解:

蓝色区域位置 left = 0, top = 0 坐标(0, 0 )

黄色区域位置 left = 60, top = 115 坐标(60, 115)

绿色区域位置 left = 115, top = 170 坐标(115, 170)

委屈绿色区域,这里理解错误,我认为绿色区域的位置是针对于蓝色区域的(0, 0)坐标的值,从上图的右下角打印出的坐标值就可以看出与下方我列出的值不一致,看看下面的图就明白了

Android View坐标getLeft, getRight, getTop, getBottom

总结: 视图的left , top , right , bottom 的值是针对其父视图的相对位置, 绿色区域是针对其父视图(即黄色区域为(0, 0)点)的坐标,不应该是(115, 170 ) 而是 (55, 55)

更多相关文章

  1. android中求区域内两个坐标之间的距离的实现
  2. Android图像开源视图:SmartImageView
  3. Android使用百度地图移动到我的位置
  4. edittext的光标的位置
  5. android view的触摸事件坐标
  6. Android 坐标系统
  7. 学个明白--Android世界的坐标系
  8. Android视图绘制流程完全解析,带你一步步深入了解View(二)
  9. Android自定义视图四:定制onMeasure强制显示为方形

随机推荐

  1. Windows下Qt for Android(安卓)编译安卓C
  2. android使用透明色
  3. Android(安卓)Context 上下文 你必须知道
  4. Android(安卓)RxJava实际应用教学:你该什
  5. Android四大组件:Service史上最全面解析
  6. Android实践之Drawable的使用
  7. Android学习感悟之消息机制
  8. android 通过Application类 共享全局数据
  9. Android(安卓)9.0 (P)
  10. 信息提醒之Notification,兼容全部SDK-更新