Android系统中的坐标系

Android系统中有两种坐标系, 分别为Android坐标系和View坐标系。 了解这两种坐标系能够帮助我们
实现View的各种操作, 比如我们要实现View的滑动, 你连这个View的位置都不知道, 那如何去操作呢? 首
先我们来看看Android坐标系。

1.Android坐标系
在Android中, 将屏幕左上角的顶点作为Android坐标系的原点, 这个原点向右是X轴正方向, 向下是Y
轴正方向, 如图所示。 另外在触控事件中, 使用getRawX() 和getRawY() 方法获得的坐标也是
Android坐标系的坐标

2.View坐标系
除了Android坐标系, 还有一个坐标系: View坐标系, 它与Android坐标系并不冲突, 两者是共同存在
的, 它们一起来帮助开发者更好地控制View。 对于View坐标系, 我们只需要搞明白图3-4中提供的信息就好
了。

View获取自身的宽和高
根据图可以得到很多结论, 首先我们能算出View的宽和高:
 

width=getRight()-getLeft();
height=getBottom()-getTop();

当然这样做显然有些麻烦, 因为系统已经向我们提供了获取View宽和高的方法。 getHeight() 用来获
取 View 自身的高度, getWidth() 用来获取 View 自身的宽度。 从 View 的源码来看, getHeight() 和
getWidth() 获取View自身的高度和宽度的算法与上面从图 中得出的结论是一致的。 View源码中的
getHeight() 方法和getWidth() 方法如下所示

public final int getHeight(){
    reture mBottom-mTop;
}

public final int getWidth(){
    reture mRight-mLeft;
}

View自身的坐标
通过如下方法可以获得View到其父控件(ViewGroup) 的距离。
• getTop() : 获取View自身顶边到其父布局顶边的距离。
• getLeft() : 获取View自身左边到其父布局左边的距离。
• getRight() : 获取View自身右边到其父布局左边的距离。
• getBottom() : 获取View自身底边到其父布局顶边的距离。

 


MotionEvent提供的方法
图中间的那个圆点, 假设就是我们触摸的点。 我们知道无论是View还是ViewGroup, 最终的点击事
件都会由onTouchEvent(MotionEvent event) 方法来处理。 MotionEvent在用户交互中作用重大, 其内部提
供了很多事件常量, 比如我们常用的ACTION_DOWN、 ACTION_UP和ACTION_MOVE。 此外,
MotionEvent也提供了获取焦点坐标的各种方法。
• getX() : 获取点击事件距离控件左边的距离, 即视图坐标。
• getY() : 获取点击事件距离控件顶边的距离, 即视图坐标。
• getRawX() : 获取点击事件距离整个屏幕左边的距离, 即绝对坐标。
• getRawY() : 获取点击事件距离整个屏幕顶边的距离, 即绝对坐标。
 

该文章从<android 进阶之光> 摘抄,只为帮助更多的小伙伴,如有侵权请联系,立即删除.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值