我正在为Android构建一个电子书阅读器。电子书的内容通常分为html文件(epub),其中包含一个或多个章节。
我打算建立一个电子书阅读器,将这些文件的内容分成不同的“页面”。问题是要知道一页上有多少文本“适合”并计算正确的页面数量,因为这取决于许多不同的因素,例如:字体大小,字号,段落,图像,分页符,头条新闻等
理想我会让我的文本合理和可选,因为普通的TextView或EditText是不可能的,我必须使用不可滚动的WebView。
总而言之,我如何“测量”适合我WebView上一个“页面”的文本数量? 或者有更好的方法来解决这个问题吗?我看到Paint类支持测量文本和breakText。
谢谢!
注意:此答案不使用webview作为显示表面。
你可以使用 帆布 绘制每一页。画布为您提供高度和宽度,您可以使用它在画布上绘制每一行 的drawText 根据可用的宽度和高度。
基本上你可以计算一行中可以容纳多少个字母,拿出那么多单词,注意不要拆分任何单词并继续绘制文本。
如果你分解了每个段落使用不同工作者的任务,你也可以快速完成。
也许你可以这样做
正在WebView中添加和呈现文本
在WebView中,您可以使用Javascript检查DOM树的当前状态,并提取各个元素的宽度和高度等测量值
Javascript通过一些回调将页面大小传回给WebView创建者
当Javascript检测到超出页面大小阈值时,它会发送一个需要分页符的信号
Android HTML5 Kindle使用Javascript打破页面,因此绝对可以。
看看它的来源 FitText 也许 这里。两者都计算出在给定空间中可以容纳多少文本。您可以借鉴他们的想法并根据您的目的进行调整。