scroll 小记

作者: bogerLiu | 来源:发表于2017-08-15 23:42 被阅读24次

    疑虑

    之前搞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 小记

        本文链接:https://www.haomeiwen.com/subject/amrbrxtx.html