Android:如何高效 & 正确地获取View的坐标位置?
Carson_Ho 关注 赞赏支持Android:如何高效 & 正确地获取View的坐标位置?
字数 586阅读 6前言
获取 View
坐标在 Android
开发中非常常见。今天carson
将详细给大家讲解 获取 View
坐标常用6种方式:
- getLeft()、getTop()、getRight()、getBottom()
- getX()、getY()、getRawX()、getRawY()
- getLocationOnScreen()
- getLocationInWindow()
- getGlobalVisibleRect()
- getLocalVisibleRect()
方式1:getLeft()、getTop()、getRight()、getBottom()
1. 应用场景
获得 View
相对 父View
的坐标
2. 使用
view.getLeft();
view.getTop();
view.getRight();
view.getBottom();
3. 具体描述
View的位置由4个顶点决定的(如下A、B、C、D)
View的顶点4个顶点的位置描述分别由4个值决定:(请记住:View的位置是相对于父控件而言的)
方式2:getX()、getY()、getRawX()、getRawY()
1. 应用场景
获得点击事件处 相对点击控件 & 屏幕的坐标
2. 使用
该方式是通过motionEvent获取的
motionEvent event;
event.getX();
event.getY();
event.getRawX();
event.getRawY();
3. 具体介绍
方式3:getLocationInWindow()
1. 应用场景
获取控件 相对 窗口Window 的位置
2. 具体使用
int[] location = new int[2];
view.getLocationInWindow(location);
int x = location[0]; // view距离window 左边的距离(即x轴方向)
int y = location[1]; // view距离window 顶边的距离(即y轴方向)
// 注:要在onWindowFocusChanged()里获取,即等window窗口发生变化后
3. 示意图
方式4:getLocationOnScreen()
1. 应用场景
获得 View 相对 屏幕 的绝对坐标
2. 使用
int[] location = new int[2];
view.getLocationOnScreen(location);
int x = location[0]; // view距离 屏幕左边的距离(即x轴方向)
int y = location[1]; // view距离 屏幕顶边的距离(即y轴方向)
// 注:要在view.post(Runable)里获取,即等布局变化后
3. 示意图
方式5:getGlobalVisibleRect()
1. 应用场景
View可见部分 相对于 屏幕的坐标。
2. 具体使用
Rect globalRect = new Rect();
view.getGlobalVisibleRect(globalRect);
globalRect.getLeft();
globalRect.getRight();
globalRect.getTop();
globalRect.getBottom();
3. 示意图
方式6:getLocalVisibleRect()
1. 应用场景
View可见部分 相对于 自身View位置左上角的坐标。
2. 具体使用
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);
localRect.getLeft();
localRect.getRight();
localRect.getTop();
localRect.getBottom();
3. 示意图
总结
本文对Android获取View坐标位置的方式进行了全面讲解,总结如下:
- 接下来我将继续介绍
Android
开发中的相关知识,感兴趣的同学可以继续关注本人博客Carson_Ho的开发笔记
请点赞!因为你的鼓励是我写作的最大动力!
相关文章阅读
Android开发:最全面、最易懂的Android屏幕适配解决方案
Android事件分发机制详解:史上最全面、最易懂
Android开发:史上最全的Android消息推送解决方案
Android开发:最全面、最易懂的Webview详解
Android开发:JSON简介及最全面解析方法!
Android四大组件:Service服务史上最全面解析
Android四大组件:BroadcastReceiver史上最全面解析
欢迎关注Carson_Ho的简书!
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。
推荐阅读更多精彩内容
- 那些年收藏的技术文章(一)-CSDN篇 Android基础及相关机制 Android Context 上下文 你必须知道的一切 Android中子线程真的... ProcessZ
- Canvas类的最全面详解 - 自定义View应用系列 前言 自定义View是Android开发者必须了解的基础;而Canvas类的使用在自定义View绘制中发挥着非常重... Carson_Ho
- 自定义View基础 - 最易懂的自定义View原理系列(1) 前言 自定义View原理是Android开发者必须了解的基础; 在了解自定义View之前,你需要有一定的知识储备;... Carson_Ho
- Android自定义View 转自:https://www.jianshu.com/p/e9d8420b1b9c 自定义View是Android... TYL_CQ
- 手把手教你写一个完整的自定义View 前言 自定义View是Android开发者必须了解的基础 今天,我将手把手教你写一个自定义View,并理清自定义V... Carson_Ho