Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何";FBReader“;在epub中对html文件进行分页_Android_Html_Pagination_Epub - Fatal编程技术网

Android 如何";FBReader“;在epub中对html文件进行分页

Android 如何";FBReader“;在epub中对html文件进行分页,android,html,pagination,epub,Android,Html,Pagination,Epub,我在试着做一个epub阅读器 我想像fbreader一样进行分页 现在我有了fbreader的源代码,但我不知道它在哪里实现分页 我在其他功能上有自己的实现 我只需要fbreader的分页 有没有人做过类似的事情 感谢您抽出时间阅读此问题 ps:分页是将html文件吐到页面上,这取决于屏幕大小和字体大小,语言也在考虑之中,更改字体大小时,页码也会更改。epub文件内容是html格式的这是一段迷人的代码。我很想看到原始学生项目的翻译(但我认为原始文件是俄语的)。由于这是C++项目的一个端口,所以它

我在试着做一个epub阅读器

我想像fbreader一样进行分页

现在我有了fbreader的源代码,但我不知道它在哪里实现分页

我在其他功能上有自己的实现

我只需要fbreader的分页

有没有人做过类似的事情

感谢您抽出时间阅读此问题


ps:分页是将html文件吐到页面上,这取决于屏幕大小和字体大小,语言也在考虑之中,更改字体大小时,页码也会更改。epub文件内容是html格式的

这是一段迷人的代码。我很想看到原始学生项目的翻译(但我认为原始文件是俄语的)。由于这是C++项目的一个端口,所以它在地方有一个有趣的编码风格。 该应用程序通过使用段落游标(ZLTextParagraphCursor)跟踪您在书中的位置。这种情况与数据库游标和记录分页比较。负责提供当前页面并计算页面数的类是ZLTextView

由于ePub是可回流的文档,而不是面向页面的,因此页面实际上没有一个具体的定义-它只是取决于您在文档中的位置(段落、单词、字符)以及显示设置。

正如迈凯轮所说,FBReader不实现分页:它使用ZLibrary,可从与FBReader相同的网站获得

原始代码使用此值计算当前页码:

size_t ZLTextView::pageNumber() const {
    if (textArea().isEmpty()) {
        return 0;
    }
    std::vector<size_t>::const_iterator i = nextBreakIterator();
    const size_t startIndex = (i != myTextBreaks.begin()) ? *(i - 1) : 0;
    const size_t endIndex = (i != myTextBreaks.end()) ? *i : 
            textArea().model()->paragraphsNumber();
    return (myTextSize[endIndex] - myTextSize[startIndex]) / 2048 + 1;
}
private synchronized int computeTextPageNumber(int textSize) {
    if (myModel == null || myModel.getParagraphsNumber() == 0) {
        return 1;
    }

    final float factor = 1.0f / computeCharsPerPage();
    final float pages = textSize * factor;
    return Math.max((int)(pages + 1.0f - 0.5f * factor), 1);
}
这位于
org.geometerplus.zlibrary.text.view.TextView


不过,它太简单了,您可以自己实现。

我的理解是,它使用了3个位图,前一个、当前一个和下一个。他们所做的是写一个文本,存储并读取这3个位图。正如你在顶部看到的那样,他们计算出你在其他例子中看到的滚动的长度。您可以从android.view包类bitmapManager开始反向工程。这应该可以解释他们如何进行分页。

fbreader的源代码在哪里?如果你发布一个链接到它的源代码,也许我们可以找到分页部分。我想android版本的源代码应该在这里。另请参见总页数计数,它在有图像时创建ISSE。你能提供解决方案吗?是的,但是有没有代码可以计算包括图片在内的页面总数