Android坐标系与相关问题
今天来看下android中与坐标系相关的问题,因为在正常开发中很多动画或位置计算都是基于坐标进行的计算。
一、坐标系的确定
android中屏幕的左上角就是原点(0,0);
原点向右延伸就是X轴正方向,原点向下延伸就是Y轴正方向
二、View拥有和坐标相关的方法说明
view.getX(),view.getY():获取的是当前视图View的左上角距离父类View的水平方向、垂直方向的距离像素值;
view.getTop(),view.getLeft();获取的是view原始状态的情况下view的上边线、左边线距离父类View的上边线、左边线的距离;
view.getBottom(),view.getRight():获取的是view原始状态下view的下边线、右边线距离父类View的上边线、左边线的距离,getRight()=getLeft()+getWidth(); getBottom()=getTop()+getHeight();
view.getScrollX() , view.getScrollY():获取是当前view的左上角相对于父类View的在水平、垂直方向的偏移量。
getScrollX()= getX()-getLeft(); getScrollY()=getY()-getTop();
在无偏移的情况下:getX()=getLeft()
view.scrollTo(x,y):视图相对父类View的坐标原点移动到对应的x、y坐标上
view.scrollBy(x,y):视图view相对自己的位置,移动对应的值
三、事件中MotionEvent的方法
event.getX()、event.getY():当前事件点相对于自己view的左边线、上边线的距离
event.getRawX()、event.getRawY():当前事件相对于屏幕的左边线、上边线的路径
以上的整体说明可以看下图:
四、View相对整个屏幕的坐标问题
View的方法 | 结论描述 |
getLocalVisibleRect() | 获取View自身可见的坐标区域,坐标以自己的左上角为原点(0,0),另一点为可见区域右下角相对自己(0,0)点的坐标,其实View2当前height为550,可见height为470。 |
getGlobalVisibleRect() | 获取View在屏幕绝对坐标系中的可视区域,坐标以屏幕左上角为原点(0,0),另一个点为可见区域右下角相对屏幕原点(0,0)点的坐标。 |
getLocationOnScreen() | 坐标是相对整个屏幕而言,Y坐标为View左上角到屏幕顶部的距离。 |
getLocationInWindow() | 如果为普通Activity则Y坐标为View左上角到屏幕顶部(此时Window与屏幕一样大);如果为对话框式的Activity则Y坐标为当前Dialog模式Activity的标题栏顶部到View左上角的距离。 |
查看评论 回复