前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Carson带你学Android:该如何正确获取View坐标位置?

Carson带你学Android:该如何正确获取View坐标位置?

作者头像
Carson.Ho
发布于 2022-03-24 12:52:42
发布于 2022-03-24 12:52:42
1.7K02
代码可运行
举报
文章被收录于专栏:Android知识分享Android知识分享
运行总次数:2
代码可运行

前言

获取 View 坐标在 Android 开发中非常常见。今天carson将详细给大家讲解 获取 View 坐标常用6种方式:

  1. getLeft()、getTop()、getRight()、getBottom()
  2. getX()、getY()、getRawX()、getRawY()
  3. getLocationOnScreen()
  4. getLocationInWindow()
  5. getGlobalVisibleRect()
  6. getLocalVisibleRect()

方式1:getLeft()、getTop()、getRight()、getBottom()

1. 应用场景

获得 View 相对 父View 的坐标

2. 使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
view.getLeft();
view.getTop();
view.getRight();
view.getBottom();

3. 具体描述

View的位置由4个顶点决定的(如下A、B、C、D)

4个顶点的位置描述分别由4个值决定:(请记住:View的位置是相对于父控件而言的

方式2:getX()、getY()、getRawX()、getRawY()

1. 应用场景

获得点击事件处 相对点击控件 & 屏幕的坐标

2. 使用

该方式是通过motionEvent获取的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
motionEvent event;

event.getX();       
event.getY();

event.getRawX();    
event.getRawY();

3. 具体介绍

方式3:getLocationInWindow()

1. 应用场景

获取控件 相对 窗口Window 的位置

2. 具体使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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. 使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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. 具体使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Rect globalRect = new Rect();
view.getGlobalVisibleRect(globalRect);

globalRect.getLeft();
globalRect.getRight();
globalRect.getTop();
globalRect.getBottom();

3. 示意图

方式6:getLocalVisibleRect()

1. 应用场景

View可见部分 相对于 自身View位置左上角的坐标。

2. 具体使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);

localRect.getLeft();
localRect.getRight();
localRect.getTop();
localRect.getBottom();

3. 示意图

总结

本文对Android获取View坐标位置的方式进行了全面讲解,总结如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android应用坐标系统全面详解
去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有较为系统性授之于渔的文章,同时由于自己也迟迟没有时间规划这一系列文章,最近想将这一系列文章重新提起来,所以就来先总结一下自定义控件的一个核心知识点——坐标系。
AWeiLoveAndroid
2018/09/03
1.4K0
Android应用坐标系统全面详解
你真的了解View的坐标吗?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/53700020
程序员徐公
2018/09/18
7980
你真的了解View的坐标吗?
小 Demo 大知识 - 控制 Button 移动来学 Android 坐标
今天是一个简单的Demo。Demo实现的功能就是,用鼠标点中button的时候,然后拖动Button。这时候Button会根据你鼠标的移动而移动,同时,你鼠标点中的Button的位置也不会改变。比如你点在Button的左上角,那移动的时候。鼠标还是在Button的左上角
青蛙要fly
2024/02/18
1810
小 Demo 大知识 - 控制 Button 移动来学 Android 坐标
自定义 View 系列(一)-坐标系和视图坐标系
View是Android所有控件的基类,接下来借鉴网上的一张图片让大家一目了然(图片出自:http://blog.51cto.com/wangzhaoli/1292313)
Android技术干货分享
2019/03/26
9540
自定义 View 系列(一)-坐标系和视图坐标系
从0开始学自定义View -1
在这张图中坐标系和我们数学中的不一样,这里的Y轴下方是正数,X轴右方是正数,其中的View(浅蓝色背景)为我们自定义的View,MotionEvent是手指点击的位置,我们对View进行移动,也是根据MotionEvent返回的xy坐标点进行绘制的。
cMusketeer
2020/05/07
9520
Android自定义控件坐标系解析
自定义控件要想彻底的把握,掌握Android各种坐标系及一些API的坐标含义毫无疑问是不可忽视的技能,对于控件的摆放位置、触摸点、控件绘制等都离不开坐标系,所以学习自定义控件之前我们就先来谈一下Android坐标系。
SoullessCoder
2021/05/20
8220
Android Scroll分析
相对于Android2.x版本中常见的长按、点击操作,滑动的方式具有更友好的用户体验性。因此从4.x的版本开始,滑动操作大量出现在Android系统中。
小小工匠
2021/08/16
8380
Carson带你学Android:自定义View的基础都在这里了!
即日常说的View,具体表现为显示在屏幕上的各种视图控件,如TextView、LinearLayout等。
Carson.Ho
2022/03/24
5100
Carson带你学Android:自定义View的基础都在这里了!
getX和getRawX
今天在做一个关于拖动button的小demo,看到里面有getX和getRawX。就写了个测试来看看两者有什么区别。 布局文件就一个button 代码如下:
提莫队长
2019/03/01
8530
getX和getRawX
Android自定义系列——2.自定义View基础知识
学习自定义控件,坐标系是必须了解的内容,Android中我们需要了解的坐标系有屏幕坐标系,View的坐标系。
老马的编程之旅
2022/06/22
5300
Android自定义系列——2.自定义View基础知识
View的滑动方式 详细介绍
用于追踪手指滑动速度的。例如相册的图片,手指快速左右滑动会切换图片,慢则不会切换。获取速度前,要先调用computeCurrentVelocity计算速度,如下代码。效果是手指滑的快时,就会弹Toast。
胡飞洋
2020/07/23
1K0
View的滑动方式 详细介绍
Android获得控件在屏幕中的绝对坐标
计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
他叫自己MR.张
2019/07/01
2.2K0
View的位置参数及其Scroller类的理解
x和y是View左上角的坐标,translationX和translationY是View左上角相对于容器的偏移量。这几个参数都是相对于父容器的坐标。
1025645
2018/08/23
6330
View的基础知识介绍
通过上面的官方介绍,我们可以看到,View 是我们平常看到的视图上所有元素的父类,按钮Button、文本TextView、图片ImageView 等。 ViewGroup 也是 View 的子类,ViewGroup 相当与 View 的容器,可以包含很多的 View.
103style
2022/12/19
4490
View的基础知识介绍
Android开发艺术笔记 | View的事件体系
关于如何得到View的这四个参数, 在View的源码中它们对应于mLeft、mRight、mTop和mBottom这四个成员变量,获取方式:
凌川江雪
2020/03/23
6840
带你一步步实现可拖拽的GridView控件
经常使用网易新闻的童鞋都知道在网易新闻中有一个新闻栏目管理,其中GridView的item是可以拖拽的,效果十分炫酷。具体效果如下图:
俞其荣
2022/07/28
1.2K0
带你一步步实现可拖拽的GridView控件
Android 自定义 View 基础知识篇
一般来讲,我们看到的都是多 View 的视图,它是树形结构的。 重点看下图中橘黄色包含的部分:
码脑
2019/04/11
6780
Android 自定义 View 基础知识篇
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
left , top , right , bottom 是组件相对于父容器的位置 , 该值一般不会改变 ;
韩曙亮
2023/03/27
4.1K0
Android技能树 — View事件体系小结
这次是讲View的事件体系。特别是不同情况下的事件分发,我会用很简单的方式教会大家。
青蛙要fly
2018/08/29
3780
Android技能树 — View事件体系小结
仿淘宝、京东拖拽商品详情(可嵌套ViewPager、ListView、WebView、FragmentTabhost)实现效果图实现
对于电商App,商品详情无疑是很重要的一个模块,观察主流购物App的详情界面,发现大部分都是做成了上下两部分,上面展示商品规格信息,下面是H5商品详情,或者是嵌套了一个包含H5详情及评论列表的ViewPager界面,本文就是实现了一个兼容不同需求的上下滚动黏滞View-DragScrollDetailsLayout。 DragScrollDetailsLayout GitHub链接 实现效果图 首先看一下实现效果图 简单的ScrollView+Webview 当然,如果将Webview替换成其他的Lis
看书的小蜗牛
2018/06/29
1.3K0
相关推荐
Android应用坐标系统全面详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验