设为首页 加入收藏

TOP

Android中滚动的实现
2014-11-24 13:04:55 来源: 作者: 【 】 浏览:1
Tags: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操作


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何在Android源码里查找Java中na.. 下一篇Android动态壁纸 Live Wallpaper

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)