`
像程序那样思考
  • 浏览: 3235 次
文章分类
社区版块
存档分类
最新评论

Android开发:如何高效 & 正确地获取View的坐标位置?

阅读更多

前言

获取 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. 使用

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学习PDF+架构视频+面试文档+源码笔记

最后

感谢大家能耐着性子,看完我啰哩啰嗦的文章。

愿与各位坚守在Android开发岗位的同胞们互相交流学习,共同进步!

在这里我也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

 
0
0
分享到:
评论

相关推荐

    View坐标位置XY轴详解

    本文将深入探讨“View坐标位置XY轴详解”,并基于配套博客提供的详细内容进行阐述。 首先,我们要知道Android中的坐标系统是基于左上角为原点(0,0)的二维平面。X轴水平向右延伸,Y轴垂直向下延伸。这是与数学中的...

    Android OpenGL ES 绘制三维/空间坐标系透明

    通过阅读和理解这些代码,你可以更好地掌握Android环境下使用OpenGL ES进行3D图形编程的技巧。 总之,创建透明的三维坐标系涉及理解OpenGL ES的坐标系统、颜色混合、深度测试、几何变换以及着色器的使用。这个过程...

    Pro Android学习:touch screen小例子

    开发者可能使用`MotionEvent.getX()`和`getY()`获取原始坐标,并调用`view.getX()`和`view.getY()`来获取View自身的坐标,以便正确地处理触摸事件。 总的来说,"Pro Android学习:touch screen小例子"是一个实践...

    Android自定义view实现水印效果

    在Android开发中,自定义View是一种常见的需求,用于实现特定的视觉效果或功能。本教程将探讨如何通过自定义View来实现水印效果,让应用能够在屏幕上动态地展示自定义的文字水印。水印通常用于保护版权或者增加信息...

    深入浅析Android坐标系统

    Android坐标系统是Android开发中的一个基础但至关重要的概念,它涉及到UI元素的定位、触摸事件的处理以及自定义视图的实现。理解Android坐标系有助于开发者精确地控制UI元素的位置和交互行为。以下是对Android坐标...

    Android-Android的可拖动PointView

    在Android开发中,创建自定义视图是一种常见的需求,用于实现独特且富有创意的用户界面。"Android的可拖动PointView"是一个这样的实例,它允许用户通过触摸屏幕来拖动一个点视图。这个项目可能是一个独立的控件或者...

    Android手绘路径,获取点集,曲线运动

    它需要实现Serializable接口,以便能够被Gson库正确地序列化和反序列化。 总的来说,实现Android手绘路径并保存点集涉及到了Android图形绘制、用户输入处理、数据结构、文件操作和Json序列化等多个技术点。这些知识...

    Android-《HenCoderAndroid开发进阶自定义View1-5绘制顺序》的练习项目

    完成这个项目后,你不仅会理解自定义View的绘制顺序,还能掌握如何高效地利用Android的图形系统实现复杂UI。这将对你的Android开发能力有显著提升,使你在解决实际问题时更加得心应手。记得实践是检验真理的唯一标准...

    android自定义View滑块移动

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素。...通过实践"android自定义View滑块移动"这样的例子,开发者可以更好地驾驭Android开发,提升自己的专业技能。

    Android外部调起高德地图显示坐标点

    在Android开发中,有时我们需要在应用中调用第三方地图应用,如高德地图,来显示特定的地理位置坐标。本文将详细讲解如何通过Android URI接口调用高德地图,并展示坐标点。 首先,我们需要理解Android URI的概念。...

    Android-一个可以实现单指移动双击缩放双指缩放的View

    在Android开发中,自定义View是一项常见的任务,它允许开发者根据特定需求创建具有独特功能的视图组件。在这个场景中,我们关注的是一个名为"RikkaScalableView"的自定义View,它实现了三个核心功能:单指移动、双击...

    android拖动控件,解决回到原点

    总之,要解决“拖动控件回到原点”的问题,关键在于正确地更新和保存视图的布局参数,同时考虑父布局可能的刷新或重建操作。在处理可滚动容器如ListView时,还需要在适配器中恢复视图的位置信息。通过这些策略,我们...

    Android 自定义View (二) 进阶

    2. **测量与布局**:自定义View需要正确地测量自身大小,以适应不同屏幕尺寸。在onMeasure()中,应根据MeasureSpec的规则计算尺寸。onLayout()方法则用于放置子View,理解LayoutParams的角色和使用至关重要。 3. **...

    根据 坐标 模拟点击事件

    // 同样地,将ACTION_UP事件传递给目标View targetView.dispatchTouchEvent(upEvent); } ``` 4. **触发模拟点击**: 在描述中提到的按钮响应事件中,你可以调用`simulateClick()`方法,传入你想要点击的屏幕...

    Android自定义View的事件分发机制(一)

    在Android开发中,自定义View是一项常见的任务,它允许开发者扩展Android系统提供的基本视图功能,以满足特定的用户界面需求。事件分发是Android UI交互的核心机制,它决定了触摸事件如何在View层次结构中传递。本文...

    Android View的六种移动方式

    在Android开发中,自定义View是一项常见的任务,它允许开发者根据特定需求创建独特的用户界面元素。本文将深入探讨“Android View的六种移动方式”,帮助开发者掌握如何动态地改变View的位置,实现各种动画效果和...

    Android-Android开发之制作圆形头像图片的功能实现。自定义View实现圆形头像效果。

    在Android应用开发中,制作圆形头像图片是一个常见的需求,特别是在社交应用或者用户个人资料页面。这个功能的实现主要涉及到自定义View以及图片处理技术。本文将深入探讨如何通过自定义View来创建一个圆形的头像...

    Android实例开发完全手册

    ### Android实例开发完全手册知识点概览 #### 第1章 正式开发前的准备 - **1.1 Windows下安装Java环境JDK** - **实例说明:** 本节介绍如何在Windows操作系统上安装Java Development Kit (JDK),这是进行Android...

    Android开发中MotionEvent坐标获取方法分析

    总的来说,Android开发者在处理触摸事件时,正确理解和使用`MotionEvent`的坐标获取方法是实现用户交互功能的关键。通过`getX()`和`getRawX()`,以及它们对应的Y坐标方法,可以精确地跟踪用户在屏幕上的动作,从而为...

Global site tag (gtag.js) - Google Analytics