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的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    上一篇 查看连载目录 已是最后 0人点赞   Carson_Ho 拥有4751钻 (约501.11元) 关注 "关注微信公众号:【carson带你解析Android】,带你高效、系统地学习Android知识" 赞赏   Android常用 49112字 655896阅读 997人关注 关注

    推荐阅读更多精彩内容

  • 那些年收藏的技术文章(一)-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
  • Carson_Ho关注 拥有4751钻 (约501.11元) Android:ScrollView与嵌套EditText的滑动冲突解决方案 阅读 826 Android GestureDetector:那些你一定要学会的手势识别应用(含实例讲解) 阅读 371 Android:关于 Intent的那些小事(介绍、使用方法等) 阅读 923

    精彩继续

    躺在浴缸里的男尸,对我笑了 | 非正常死亡010 阅读 2201 那个为40元将上海迪士尼告上法院的大三学生,怕不是个傻子吧? 阅读 23947 评论0 赞1赞 赞赏
    私信
     22,202