Android中滚动的实现

本文深入探讨了Android中滚动机制的基础实现方式,包括使用View类的方法实现基本滚动,以及如何引入Scroller类来实现平滑滚动效果。详细解释了滚动相关参数的作用,滚动事件的响应机制,以及在程序设计中如何结合onInterceptTouchEvent和onTouchEvent来控制滚动行为。

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操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值