美文网首页Android开发Android进阶之路Android开发
Android:6种方式让你高效 & 正确地获取View的坐标位

Android:6种方式让你高效 & 正确地获取View的坐标位

作者: Carson带你学安卓 | 来源:发表于2019-10-22 07:55 被阅读0次

    前言

    获取 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开发中的相关知识,感兴趣的同学可以继续关注本人博客Carson_Ho的开发笔记

    请点赞!因为你的鼓励是我写作的最大动力!

    相关文章阅读
    Android开发:最全面、最易懂的Android屏幕适配解决方案
    Android事件分发机制详解:史上最全面、最易懂
    Android开发:史上最全的Android消息推送解决方案
    Android开发:最全面、最易懂的Webview详解
    Android开发:JSON简介及最全面解析方法!
    Android四大组件:Service服务史上最全面解析
    Android四大组件:BroadcastReceiver史上最全面解析


    欢迎关注Carson_Ho的简书!

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

    相关文章

      网友评论

        本文标题:Android:6种方式让你高效 & 正确地获取View的坐标位

        本文链接:https://www.haomeiwen.com/subject/adzcpctx.html