Android View回顾之坐标系
程序员文章站
2022-03-11 21:19:41
前言Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果。Android 相对坐标系在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。如下图所示:View 提供获取坐标方法getTop()获取到的是View自身的顶边到其父布局顶边的距离getLeft()获取到的是View自身的左边到其父布局左边的距离getRight()获取到的...
前言
Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果。
Android 相对坐标系
在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。如下图所示:
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 绝对坐标系
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屏幕区域划分
这些区域里常用一些坐标或者度量方式
//获取屏幕区域的宽高等尺寸获取
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 ()方法内或者之后调运,因为只有这时候才是真正的显示。
本文地址:https://blog.csdn.net/xufei5789651/article/details/107596691