Scroller个人理解为:类似一个动画,参数不断的变化,在重载方法中可以不断的移动view
1.声明
private var mScroller:Scroller? = null
2.在构造器里
mScroller = Scroller(context)
3.设置参数 startScroll(starx,stary,dx,dy,duration,finalx = starx+dx,curx就是过程中的值,完成后curx最终会变成finalx,可以通过isFinished查询是否完成这个滚动,可以调用abortAnimation()函数使过程立即完成,curx也就立即变成了finalx。注意,调用startScroll后必须调用invalidate()函数刷新
4.重载computeScroll函数,处理过程中的滚动,一般调用scrollTo完成滚动,最后也必须调用invalidate()进行重绘。
mLastView?.scrollTo(mScroller!!.currX,0) //最终还是要借助View的scrollTo或scrollBy完成移动
invalidate()
关于scrollTo(dx,dy)
dx>0表示视图(View或ViewGroup)的内容从右向左滑动; 反之,从左向右滑动
dy>0表示视图(View或ViewGroup)的内容从下向上滑动; 反之,从上向下滑动
关于ScrollX,ScrollY
getScrollX()说明:=手机屏幕显示区域左上角x坐标减去MultiViewGroup视图左上角x坐标,坐标是左负右正,左移多少那就是多少的scrollx正值
getScrollY()说明:=手机屏幕显示区域左上角y坐标减去MultiViewGroup视图左上角y坐标=0