zoukankan      html  css  js  c++  java
  • Android View坐标系详解(getTop()、getX、getTranslationX...)

    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相对于父容器的坐标,如下图

    图1.1

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

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

    需要注意的是,这四个方法获取的坐标表示的是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();
    • 1
    • 2

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

    图2.1
  • 相关阅读:
    linux下通过命令行重启服务,查看id,更改tv密码
    windows渗透相关、hideadmin工具隐藏用户账号、添加隐藏用户
    windows服务隐藏 以及进程隐藏
    nat32 winh命令远程执行难点
    anydesk命令行使用
    html页面,能用鼠标滚轮滑动,但是不能触屏滑动
    Java 全局统一异常捕获
    git 常用操作
    vue v-for强制刷新
    flutter-TextField垂直居中
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/8919434.html
Copyright © 2011-2022 走看看