标签:
1,要在交互的时候实现比较好的效果,手势和滑动是最基础的交互方式,所以必不可少的要用Scroller和GestureDetector这两个类。
2,手势滑动一般与抛掷fling又关联起来,实现比较平缓的过渡效果。
3,实现这样的效果,需要以下基础知识
(1)认识Scroller类的fling函数
/** * Start scrolling based on a fling gesture. The distance travelled will * depend on the initial velocity of the fling. * * @param startX Starting point of the scroll (X) * @param startY Starting point of the scroll (Y) * @param velocityX Initial velocity of the fling (X) measured in pixels per * second. * @param velocityY Initial velocity of the fling (Y) measured in pixels per * second * @param minX Minimum X value. The scroller will not scroll past this * point. * @param maxX Maximum X value. The scroller will not scroll past this * point. * @param minY Minimum Y value. The scroller will not scroll past this * point. * @param maxY Maximum Y value. The scroller will not scroll past this * point. */ public void fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
源码是上边的代码,startX:起始X位置,startY:起始Y,velocityX:X方向滑动速度,velocityY:Y方向滑动速度,minX:水平滑动最小值,maxX:水平滑动最大值,minY:垂直滑动最小值,maxY:垂直滑动最大值。
(2)滑动过程:调用fling或者调用startScroll都是对Scroller类中的起始位置和终止位置进行设置,要实现真正的滑动,必须重写View类的computeScroll在里边改变参数,并主动调用invalidate刷新当前view,就可以看到效果,注意:这里computeScroll和draw实际上是相互调用的关系,计算滚动距离-》刷新-》在计算距离-》刷新,所以,需要在computeScroll中指定什么时候不需要刷新了,也就是跳出条件,用computeScrollOffset去判断跳出条件。
标签:
原文地址:http://www.cnblogs.com/hpustudent/p/4557376.html