一步一步学会自定义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的位置

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容