现在的位置: 首页 > 综合 > 正文

Android中滚动的实现

2013年08月25日 ⁄ 综合 ⁄ 共 1023字 ⁄ 字号 评论关闭

Android中滚动的实现

1.基础类View已经实现了大部分的滚动需要的基本支持

1)scrollBy,scrollTo

  将View滚动到指定位置,其实就是通过记录mScrollX和mScrollY并触发重新绘制来完成

2)awakenScrollBars

  触发滚动条的绘制

3)setVerticalScrollbarEnabled,setHorizontalScrollbarEnabled,setScrollbarFadingEnabled,

  setHorizontalFadingEdgeEnabled,setVerticalFadingEdgeEnabled,setScrollbarStyle来控制

  Scroll

4)getScrollX,getScrollY获取当前的offset

5)定义computeScroll给ViewGroup::drawChild调用,派生类如果要实现滚动效果,重载这个接口

6)和滚动比较有关的两个参数,屏幕的宽和高,getHeight(),getWidth()

7)onScrollChanged通知滚动result,派生类可以重载,对滚动result作出响应

2.通常引进Scroller或者类似的机制来实现平滑的滚动效果(比如滑屏操作)

1)通过Scroller::startScroll或者Scroller::fling初始化起始坐标,duration等

2)在类的computeScroll中调用Scroller::computeScrollOffset来计算即时的位置mCurrX,mCurrY,将这两个

     值赋给mScrollX,mScrollY。因为是自己修改mScrollX和mScrollY而不是通过View的scrollTo,scrollBy,所以

    自动调用onScrollChanged

3)调用invalidate或者postInvalidate来触发刷屏操作,重新绘制的时候因为mScrollX和mScrollY的改变,实现

     了滑动的效果

3.程序设计上一般结合onInteceptTouchEvent和onTouchEvent

如果ActionDown后再来ActionMove,且两者坐标出现移动,则让程序进入Scrolling状态,在ActionMove的时候调用scrollTo或者scrollBy

如果ActionDown后来ActionUp,且速度超过指定速度,则进行fling操作

抱歉!评论已关闭.