今天学习了scroller的使用,整理一下知识点。
1.每一个view都有 scrollto()和scrollby()的方法用于控件的滑动,这种方法直接调用显得很生硬,没有滑动的过程。
2.scrollto()和scrollby()的方法的区别,scrollby 是相对当前位置的相对移动,scrollto 是相对于初始位置的绝对滑动,所以调用多次scrollto()方法无效,调用多次scrollby()方法有效,实际上scroll by的内部也是调用scroll to 的方法,只是参数值上多加上了一个偏移量(和初始位置的距离)
3.scrollto()的使用参数上是反的,例如你使用:scroll(20,10),会在x轴上的负方向(左)移动20px,会在y轴上的负方向(下)移动10px,这就尴尬了,为什么呢,因为重新计算控件位置时,是x减去20,y减去10 ,而不是正常逻辑上的加。
4.scrollto()滑动的是控件的内容,而不是view的本身,什么是控件的内容?举个例子:textview里的字是textview的内容,viewgroup里子控件是控件的内容, 发生滚动时,滚动的是控件的内容。不信的话你可以把空间设置背景色,调用scrollto()方法,可以看出结果。
5.scroller的使用:scroller是用于平滑的让控件滑动,它更像一个插值器,根据滑动时间关系不断计算view当前应该在什么位置,再调用scrollto滑动到此处。比如 a滑到b 要100px,我要在10秒中滑动结束,(假设滑动是匀速的),那么第一秒,scroller计算出view 应该滑动到10px处,用scrollto方法滑到10px处,再重绘,第二秒,scroller计算出view 应该滑动到20px处,用scrollto方法滑到20px处,再重绘...一直到滑动结束。就像是桢动画一样。