一步一步学会自定义View(二)Android中的 坐标系

        在Android 中,存在两种坐标系,一个是Android 坐标系,一个是View坐标系。

        1、对于Android 坐标系,一般屏幕左上角为坐标原点,从原点向右为X轴正方向,原点向下为Y轴正方向

        在自定义View或者触摸事件MotionEvent当中的getRawX()和getRawY()方法获取到的就是Android 坐标系X轴和Y轴的距离,也称为绝对坐标。

        2、而对于View来说,有分别获取距离父ViewGroup上下左右的方法,

        getTop()(View的顶边和父ViewGroup的顶边的距离)、

        getBottom()(View底部到父ViewGroup的底部距离)、

        getLeft()(View左边到父ViewGroup左边的距离)、

        getRight()(View右边到父ViewGroup右边的距离),


           那么根据这四个值的定义就可以获取到View的宽(getRight()-getLeft())高(getBottom()-getTop())。View自身有获取宽高的方法,getWidth()和getHeight(),进入到源码中查看,其实也是使用的getRight()-getLeft()和getBottom()-getTop()

        3、在Android中有一个触摸事件onTouchEvent(MotionEvent event)

里面有两个方法getX()和getY(),这两个方法就是相对坐标(View自身(触摸点)的边线和父ViewGroup边线的距离),要和绝对坐标有所区分。下图中的原点表示触摸位置。

而根据MotionEvent的不同,就可以获取到不同手势(以滑动,MotionEvent.ACTION_MOVE为例)下的不同相对坐标,就可以计算出View的滑动距离,再通过layout(int l, int t, int r, int b)方法来重新设置View的位置

        其他具体的计算和操作,这里不做说明(我也是一知半解不透彻),只把坐标系写在这里记录一下。

你可能感兴趣的:(一步一步学会自定义View(二)Android中的 坐标系)