scroll 小记

疑虑

之前搞view滑动的时候就一直有一个疑虑为什么scroll滚动的方法,scrollTo,scrollBy 的时候里面传入的数值会与手指移动的数值(stop-start)相反,

首先要明白两个scrollXX方法改变的是mScrollX, mScrollY,scroll移动的是view的内容,而不是view的坐标

那么就抱着这个去看看源码,view因为mScrollX,mScrollY的转变而做了什么,全局搜索后发现,view在onDraw里面调用了canvas.translate(-mScrollX, -mScrollY);这个方法,所以是与传入的值相反,也就是你手指往上移动,内容会向下移动,总会与touchEvent移动的相反。
但是为什么对传入的值进行的负转换,这是为什么呢,后在在《android开发艺术探索》中原话如下

mScrollX的值总是等于view的左边缘和view内容左边缘

其中view的左边缘是不会变的,所以是相反的canvas移动。
例如:内容向上移动,canvas要相应的向上平移,所以会调用canvas.translate(0, -y);
看别人博客,有一个口诀不错 正负,上下,左右。

这也是我自己看源码,看别人博客想出来的,如果有不足,欢迎指出,共同探讨,成长。

你可能感兴趣的:(scroll 小记)