我们自定义View写滑动相关的实现时,经常会碰到使用这个方法获取到的值来作为弹性滑动滑回原位置时的一些参数,那这个函数获取到的值到底是啥呢?
看下官方文档怎么说:
Return the scrolled left position of this view. This is the left edge of the displayed part of your view. You do not need to draw any pixels farther left, since those are outside of the frame of your view on screen.
翻译:返回这个视图滚动到的左边的位置。这是你视图展示部分的左边界。你不需要绘制在更左的地方绘制任何像素点,因为这些内容在屏幕上时再你的视图框架之外的。
可能一部分同学还是没理解,那一张图来结束这篇文章吧!
其中绿色的线和黄色的线均代表的是View在不同的位置getScrollX返回的值,黑色的框代表的是画布,当显示一个View时,默认情况是View的左边跟画布的x坐标0位置对齐,然后当你想显示画布超出View显示范围右边的内容时,向左滑动,其实这时候是View在向右滑动,也就是getScrollX返回的是正值,这里就可以理解为手指向左滑动,实际上是View相对于画布坐标0位置的向右滑动来展示更右边的内容。
这里还有一根红线,这里想跟大家分享一个实际场景,比如我想我的View实现ViewPager那种,内容滑动超过多少时,滚动到下一页内容,这时我们应该怎么来计算滑动之后需要补上多少才能滑动到下一页呢?这时我们可以通过View的宽度来减去两次getScrollX的差值来计算。这里给大家一个建议,在进行计算的时候,统一保证值为正数,在最终滑动的情况再根据实际想要滑动的方向,确定正负。