Android:自定义view之坐标系

本篇文章基于小米3测试

坐标系
  • 屏幕坐标系和数学坐标系的区别
    Android设备定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向, 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的,详情如下:
    (PS:其中的∠a 是对应的,注意y轴方向!)

    数学坐标系

    安卓屏幕坐标系

  • 假设其中棕色部分为手机屏幕

屏幕默认坐标系示例
  • View的坐标系
    注意:View的坐标系统是相对于父控件而言的.
getTop(); //获取子View左上角距父View顶部的距离
getLeft(); //获取子View左上角距父View左侧的距离
getBottom(); //获取子View右下角距父View顶部的距离
getRight(); //获取子View右下角距父View左侧的距离

如下图所示:

View坐标系

屏幕各个点的坐标

  • 触摸点坐标
    MotionEvent中 get 和 getRaw 的区别
    其中:
event.getX(); //触摸点相对于其所在组件坐标系的坐标
event.getY();
event.getRawX();//触摸点相对于屏幕默认坐标系的坐标
event.getRawY();

如下图所示:

  • 接下来针对view坐标系的getX进行测试(getRawX()类似):
代码log测试
  • 在view坐标系下的X轴的变化,当然Y轴类似,只要记住一点,获取事件的坐标处于哪个坐标系就可以了,为了查看方便我打开了布局边界
    view坐标系下X的变化
  • log显示X的变化,因为触摸过程打印很多的坐标,所以就截取部分


    截取开始部分

    截取结束部分
总结

介绍坐标是为了区别view坐标系和屏幕坐标系,用于处理一些点击滑动事件,只有知道了坐标的变化才知道该怎么处理由坐标引起的view的变化.
自定义View目录
参考文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容