android项目源码解析03——vudroid阅读器源码解析02:屏幕滚动

vudroid在显示一本书的内容时,如果你滑动屏幕,则会有如下显示:


此图中,左上角蓝色区域显示当前页数,右上角显示红色圈内显示当前正在加载。

这里我们可以想到有两种实现方案:

1)在BaseViewerActivity中处理用户翻页操作,比如滑动、点击上下左右键等。此时根据具体的用户操作计算需要显示哪几页,通知DocumentView去显示这些页,同时更新图中的蓝圈及红圈区域。

2)在DocumentView中处理用户翻页操作,比如滑动、点击上下左右键等。此时根据具体的用户操作计算需要显示哪几页,显示这些页,同时通知BaseViewerActivity去更新图中的蓝圈及红圈区域。

如果我来设计,我会选择方案1。但是在vudroid这个项目中,作者选择了方案2,而且实现的很巧妙。我们只介绍图中篮圈中内容的实现机制,红圈中内容的实现类似。

我们先来看一下这里涉及到的类(下图是我用EA画的,由于对ea及uml不是很熟悉,因此下图难免有错):


具体的函数调用是按如下顺序进行的:

1、初始化:

BaseViewerActivity.onCreate()
currentPageModel = new CurrentPageModel();
currentPageModel.addEventListener(this)(实际上是调用了EventDispatcher.addEventListener(Object listener))

2、执行(函数调用顺序为从上往下):

DocumentView.scrollTo()DocumentView.onScrollChanged()DocumentView.currentPageModel.setCurrentPageIndex()EventDispatcher.dispatch(new CurrentPageListener.CurrentPageChangedEvent(currentPageIndex))CurrentPageListener.CurrentPageChangedEvent.dispatchOn(listener)CurrentPageListener.CurrentPageChangedEvent.dispatchSafely(CurrentPageListener listener)BaseViewerActivity.currentPageChanged(int pageIndex)(实际上是调用了CurrentPageListener.currentPageChanged(int pageIndex))

只要了解清楚,这其中涉及到的类关系,同时把握住上面这些函数的调用顺序,你就可以理清整个框架了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值