Android-阅读器系列

FBreaderj笔记整理(页脚)

2018-08-20  本文已影响0人  EvanZch

前言

FBreader是一款强大的十分强大的电子书阅读器,功能十分丰富,支持epub,txt、PDF(需要额外插件)等多种格式,戳这里下载体验 (科学上网),作者已将源码分享出来了,如果你有想法开发一款电子书类的App,十分建议去阅读一下 FBReaderJ源码。

本系列是我在使用FBReaderJ过程中,整理的一些笔记,方便后期查阅。

安装包

如果上面链接不行,可以直接下载下面的安装包

Fbreader.Apk (密码:x2gh)

pdf插件(密码:q3c3)

正文

1、页脚样式

垂直滚动样式

垂直进度条样式.png 水平页脚新样式.png 水平页脚旧样式.png

2、页脚样式设置

class:ViewOptions

// 设置页脚样式
ScrollbarType =new ZLIntegerRangeOption("Options", "ScrollbarType", 0, 4, FBView.SCROLLBAR_SHOW_AS_FOOTER);

通过第四个参数,可直接设置页脚显示样式或者取消显示。

// 上下左右边距
LeftMargin =new ZLIntegerRangeOption("Options", "LeftMargin", 0, 100, horMargin);
RightMargin =new ZLIntegerRangeOption("Options", "RightMargin", 0, 100, horMargin);
TopMargin =new ZLIntegerRangeOption("Options", "TopMargin", 0, 100, 20);
BottomMargin =new ZLIntegerRangeOption("Options", "BottomMargin", 0, 100, 40);
// 页脚高度
FooterHeight =new ZLIntegerRangeOption("Options", "FooterHeight", 8, dpi / 8, dpi / 10);
// 切换夜间白天模式
ColorProfileName =new ZLStringOption("Options", "ColorProfile", ColorProfile.DAY);

简单说一下ZLIntegerRangeOption,其实就是一个 map 数据保存的封装类,参数如下:

ZLIntegerRangeOption(String group, String optionName, int minValue, int maxValue, int defaultValue)

其中 groupoptionName 会生成 map 的 key 值, defaultValue 为参数,而 minValuemaxValue 参数为 defaultValue 取值范围。

3、页脚样式分析

其中垂直方式比较简单,就直接跳过,主要是 SCROLLBAR_SHOW_AS_FOOTER 和 SCROLLBAR_SHOW_AS_FOOTER_OLD_STYLE 两种方式。

FBView 中 :

public Footer getFooterArea() {
        int type = myViewOptions.ScrollbarType.getValue();
        LogUtils.i(TAG + "--getFooterArea  type=" + type);
        switch (type) {
            case SCROLLBAR_SHOW_AS_FOOTER:
                if (!(myFooter instanceof FooterNewStyle)) {
                    if (myFooter != null) {
                        myReader.removeTimerTask(myFooter.UpdateTask);
                    }
                    // 水平新样式
                    myFooter = new FooterNewStyle();
                    myReader.addTimerTask(myFooter.UpdateTask, 15000);
                }
                break;
            case SCROLLBAR_SHOW_AS_FOOTER_OLD_STYLE:
                if (!(myFooter instanceof FooterOldStyle)) {
                    if (myFooter != null) {
                        myReader.removeTimerTask(myFooter.UpdateTask);
                    }
                    // 水平旧样式
                    myFooter = new FooterOldStyle();
                    myReader.addTimerTask(myFooter.UpdateTask, 15000);
                }
                break;
            default:
                if (myFooter != null) {
                    myReader.removeTimerTask(myFooter.UpdateTask);
                    myFooter = null;
                }
                break;
        }
        return myFooter;
    }
上一篇下一篇

猜你喜欢

热点阅读