我正在开发一款可以阅读epub格式电子书的Android应用程序,目前我正在使用Paul Siegeman的epublib库,它是一个非常优秀的epub阅读器但它有一些限制,例如我需要的那个功能,你不能像读实体书一样水平翻页,因此我需要自己实现这个功能,但我卡住了。
实际读取epub并将其放入webview的方法如下:
private void openEpub(String bookFilename){
WebView webView = (WebView) findViewById(R.id.webView);
nl.siegmann.epublib.domain.Book book=null;
try {
book = (new EpubReader()).readEpub(new FileInputStream(Environment.getExternalStorageDirectory().getPath() + "/" + bookFilename));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String baseUrl = Environment.getExternalStorageDirectory().getPath() + "/";
String data=null;
try {
data = new String(book.getContents().get(1).getData());
} catch (IOException e) {
e.printStackTrace();
}
webView.loadDataWithBaseURL(baseUrl, data, "text/html", "UTF-8", null);
}
所以您可以看到,我在Webview中显示电子书,据我所知,Webview提供的唯一滚动可能性是上下滚动。
我考虑将getData()返回并由Webview加载的html字符串拆分为多个页面,并通过ViewPager逐个显示它们,但如何根据屏幕大小正确地拆分html呢?
您认为这个想法可行吗?有没有其他方法可以从左到右/从右到左(分页)显示epub或任何其他“免费或便宜”的库可以做到这一点? (我尝试了PageTurner,它非常好,但商业版本对我来说太贵了)