前言

Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果。

Android 相对坐标系

在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。如下图所示:
Android View回顾之坐标系_第1张图片

View 提供获取坐标方法

  • getTop()
    获取到的是View自身的顶边到其父布局顶边的距离
  • getLeft()
    获取到的是View自身的左边到其父布局左边的距离
  • getRight()
    获取到的是View自身的右边到其父布局左边的距离
  • getBottom()
    获取到的是View自身的底边到其父布局顶边的距离
  • getX()
    获取View左上角的坐标X轴上的坐标(相对于父布局)。返回值为getLeft()+getTranslationX(),注意:View在平移的过程中,getLeft()表示的是原始左上角的X轴距离,其值不会改变。发生改变的是getX()、getTranslationX()
  • getY()
    获取View左上角的坐标Y轴上的坐标(相对于父布局)。返回值为getTop()+getTranslationY(),注意:View在平移的过程中,getTop()表示的是原始左上角的Y轴距离,其值不会改变。发生改变的是getY()、getTranslationY()

Android 绝对坐标系

Android View回顾之坐标系_第2张图片

MotionEvent提供距离相关方法

  • getX()
    获取触摸事件距离控件左边的距离
  • getY()
    获取触摸事件距离控件顶边的距离
  • getRawX()
    获取触摸事件距离整个屏幕左边的距离
  • getRawY()
    获取触摸事件距离整个屏幕顶边的距离

View 宽高相关方法

  • getWidth()
    返回值是mRight-mLeft,一般会参考measure的宽度,调用layout()后有效
  • getHeight()
    返回值是mBottom-mTop,一般会参考measure的高度,调用layout()后有效
  • getMeasuredWidth()
    返回measure过程得到的mMeasuredWidth值,供layout参考
  • getMeasuredHeight()
    返回measure过程得到的mMeasuredHeight值,供layout参考

Android屏幕区域划分

Android View回顾之坐标系_第3张图片
这些区域里常用一些坐标或者度量方式

//获取屏幕区域的宽高等尺寸获取DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);int widthPixels = metrics.widthPixels;int heightPixels = metrics.heightPixels;
//应用程序App区域宽高等尺寸获取Rect rect = new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
//获取状态栏高度Rect rect= new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);int statusBarHeight = rectangle.top;
//获取状态栏高度Rect rect= new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);int statusBarHeight = rectangle.top;
//View布局区域宽高等尺寸获取Rect rect = new Rect();  getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(rect);  

特别注意: 上面这些方法最好在Activity的onWindowFocusChanged ()方法内或者之后调运,因为只有这时候才是真正的显示。

参考:
Android应用坐标系统全面详解

更多相关文章

  1. Android 虚拟摇杆,多种模式回调,返回距离级别,方向,角度。
  2. Android中的两种坐标系
  3. Android坐标系
  4. 根据百度地图API得到坐标和地址并在地图上显示
  5. Android 教你如何通过 LocationManager 获取得到当前位置坐标
  6. Android获取RecyclerView滑动距离
  7. Android View坐标getLeft, getRight, getTop, getBottom
  8. android中求区域内两个坐标之间的距离的实现

随机推荐

  1. android:installLocation简析
  2. Android中JNI的使用方法
  3. [Android(安卓)博客]收集一些不错的,关于a
  4. 最新android 应用源码下载
  5. android 如何获得系统权限 android.uid.s
  6. android 用代码画虚线边框背景
  7. Android(安卓)Studio第十八期 - Snaphelp
  8. RelativeLayout(相对布局)
  9. android的进度条使用
  10. 如何解决Android的SDK与ADT不匹配问题