先说坐标系
- 视图坐标
Android view的视图是没有边界的,也就是说canvas是没有边界的,可以无限绘制, 那么这种无边界的坐标被成为视图坐标。(绝对坐标,坐标原点为屏幕左上角) - 布局坐标
也交相对坐标,在View Layout时以当前view的左上角为坐标原点
这里盗一张图
scrollBy和scrollTo
至于两者的区别,网上很多详细说明,就是scrollBy是滚动的一段距离(disx, disy), scrollTo是滚动到指定坐标(direcx, direcy)。这里说一些注意事项
- scrollBy实际是调用的scrollTo 方法,所以两者的实现是一样的。
- view的getScrollY()方法获取的是scrollTo中设置的direcY也就是滚动的偏移量, 其绝对值是view实际滚动的距离,但是getScrollY()的值的符号与坐标系符号相反, 比如当前从(0, 0)位置滚动到(100, 100)位置,偏移量是(0-100, 0-100)=(-100, -100)所以应该设置scrollTo(-100, -100)达