Android中获取坐标点的一些方法解释

一、getLocationInWindow和getLocationOnScreen的区别

// location [0]--->x坐标,location [1]--->y坐标
int[] location = new  int[2] ;

// 获取在当前窗口内的绝对坐标,getLeft , getTop, getBottom, getRight,
 这一组是获取相对在它父窗口里的坐标。

view.getLocationInWindow(location);

//
获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。

view.getLocationOnScreen(location);

如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。
在onWindowFocusChanged(boolean hasFocus)中获取为好。

View.getLocationInWindow()和
View.getLocationOnScreen()在window占据全部screen时,返回值相同,不同的典型情况是在Dialog中时。当Dialog出现在屏幕中间时,View.getLocationOnScreen()取得的值要比View.getLocationInWindow()取得的值要大。

二、Android View坐标getLeft, getRight, getTop,
getBottom

理解坐标,位置概念

这里涉及坐标系的概念:

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

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

right = left + width;

bottom = top + height;

相应API

视图左侧位置  view.getLeft()

视图右侧位置 view.getRight()

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

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

视图宽度 view.getWidth();

视图高度 view.getHeight()

实例分析

按照我的理解:

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

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

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

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

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

参考:

http://www.cnblogs.com/zhengbeibei/archive/2013/05/07/3065999.html

http://www.xuebuyuan.com/1585492.html

最新文章

  1. 【Beta】用户问题反馈及处理(一直更新)
  2. 正确使用ng-if和ng-show
  3. C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】
  4. Python全栈开发day6
  5. sql lock
  6. rtl8723 2个 wlan
  7. 一段网上java常见escape和unescape方法的BUG
  8. 用root帐号切换其他帐号提示 su: warning: cannot change directory to /home/oracle: Permission denied
  9. C# 多媒体播放器
  10. centos6+ 安装python3.6以及pip3
  11. Web工作方式:浏览网页的时候发生了什么?
  12. 一文让你秒懂互联网TCP/IP协议的深层含义
  13. C# 枚举类型 enum
  14. mongodb查询数据库中某个字段中的值包含某个字符串的方法
  15. logmnr使用
  16. 【刷题】BZOJ 1124 [POI2008]枪战Maf
  17. 09: python基础补充
  18. Daily Scrum (2015/10/29)
  19. Web应用的演变以及网络应用程序的架构的优缺点
  20. FPGA--数字芯片之母

热门文章

  1. javascript的Array.prototype.map()和jQuery的jQuery.map()
  2. JS修改地址栏参数实例代码
  3. html代码能让网页的横向滚动条默认居中
  4. COGS 201. [BYVoid S1] 埃雷萨拉斯的宝藏
  5. POJ 2184 Cow Exhibition(背包)
  6. 解决wget下载https时报错 --no-check-certificate (不检查证书)
  7. softmax 函数
  8. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
  9. MRCA|Wright–Fisher population genetic model|SNP rate
  10. 前端小记6——项目中常用的ES6方法