博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
View坐标系详解(getTop(),getLeft(),getX(),getY(),getLocationOnScreen(), getLocationInWindow())
阅读量:6094 次
发布时间:2019-06-20

本文共 1111 字,大约阅读时间需要 3 分钟。

 

View 提供了如下 5 种方法获取 View 的坐标:

1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight();
2. View.getX()、View.getY();
3. View.getTranslationX()、View.getTranslationY();
4. View.getLocationOnScreen(int[] position);
5. View.getLocationInWindow(int[] position);
初学View时见到这个多个方法可能有点懵逼,下面我来根据编号一一介绍:

 

**1.** 这四个方法用于获取View相对于父容器的坐标,如下图

从上图可知,可根据View的这四个坐标来获取View的大小:

View的Height值 = view.getBottom() - view.getTop();View的Width值 = view.getRight() - view.getLeft();

需要注意的是,这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移操作并不会改变着四个方法的返回值。

 

2. getX()与getY()方法获取的是View左上角相对于父容器的坐标,当View没有发生平移操作时,getX()==getLeft()、getY==getTop()。

3. translationX与 translationY是View左上角相对于父容器的偏移量:translationX = getX() - getLeft(),当View未发生平移操作时,translationX 与translationY都为0。
4. 获取View相对于整个屏幕的坐标。
5. 获取View相对于Window的坐标(忽略状态栏及ActionBar)。

上面介绍的是View获取坐标的几种方法,但是在实际开发中不仅需要获取View的坐标,有时候还需要获取用户点击时的坐标。

MotionEvent

当重写View的onTouchEvent(MotionEvent event)方法时android会把触摸事件封装成MotionEvent成提供给开发者,MotionEvent提供了两组用于获取用户点击点坐标的方法: 

1. getX()、getY();2. getRawX、getRawY();

getX()和getY()获取到的是相对于当前View左上角的坐标; getRawX和getRawY()获取的是相对于屏幕左上角的坐标。 如下图(画的不好,将就着看吧:-D):

 

转载地址:http://suwza.baihongyu.com/

你可能感兴趣的文章
编程的艺术门槛
查看>>
微信第三方登陆
查看>>
进程 线程 协程 管程 纤程 概念对比理解
查看>>
JNI返回复杂对象之中的一个
查看>>
Android 使用Retrofit请求API数据
查看>>
前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】...
查看>>
Windows上安装多个MySQL实例(转)
查看>>
mysql导入导出sql文件
查看>>
Mac下Apache服务器配置
查看>>
SuperMap iObject入门开发系列七管线横断面分析
查看>>
[RxJS] Chain RxJS Operators Together with a Custom `pipe` Function using Array.reduce
查看>>
用Python实现一个简单的文件传输协议
查看>>
在大公司和小公司的优缺点(转)
查看>>
使用BeginInvoke,EndInvoke异步调用委托
查看>>
Date 与 SimpleDateFormat
查看>>
为什么JAVA要提供 wait/notify 机制?是为了避免轮询带来的性能损失
查看>>
.CSC.exe编译器使用
查看>>
集成 Maven 2 插件到 Eclipse 的过程
查看>>
返回定义利用DataTable、DataSet返回SQL Server的表或者单个字段
查看>>
[Step By Step]SAP HANA如何在SAP Business Objects Data Services中创建MySQL的连接
查看>>