安卓开发学习安卓开发Android-阅读器系列

FBReader 判断一本书的最后一页

2017-12-01  本文已影响61人  小白猿

前言

公司大佬使用HS项目之后提出了一些优化,其中有翻看到一本书的最后一页的时候,应给给与给予提示,参看了一些其他阅读类的app,也有很多不给提示,但是都在阅读器底部标明了页数,但是HS项目中并未这样标识,可能是由于FB的分页并不准确,所以寻找代码中的解决思路

寻找过程

翻看了一下HS项目引用的HSReader项目,以及杜小哥的一些注释,返现关于章节的判断方法比较多,但是关于页的方法几乎没有,或者很少,大多都是页面的绘制,也可能是我找的不仔细

偶然发现

通过翻章的方法一层一层往上回溯,找到了一个方法

@Override
    public boolean canScroll(PageIndex index) {
        switch (index) {
            default:
                return true;
            case next: {
                final ZLTextWordCursor cursor = getEndCursor();
                return cursor != null && !cursor.isNull() && !cursor.isEndOfText();
            }
            case previous: {
                final ZLTextWordCursor cursor = getStartCursor();
                return cursor != null && !cursor.isNull() && !cursor.isStartOfText();
            }
        }
    }

其中参数PageIndex的枚举类型是这样定义的

public static enum PageIndex {
        previous, current, next;

        public PageIndex getNext() {
            switch (this) {
                case previous:
                    return current;
                case current:
                    return next;
                default:
                    return null;
            }
        }

        public PageIndex getPrevious() {
            switch (this) {
                case next:
                    return current;
                case current:
                    return previous;
                default:
                    return null;
            }
        }
    }

代码解析

简单理解为是通过一个游标,

与HS项目融合

protected void dispatchAction(Message message) 

传入的参数是PageIndex. next,当翻到最后一页的时候,会返回false,然后根据这一标志位做相应操作,比如toast或者dialog

上一篇 下一篇

猜你喜欢

热点阅读