0

通过阅读有关 stackoverflow 的一些问答,我了解到 webview 可能是显示 epub 文件的不错选择。

在以下线程中,它提到您也可以在 webview 中突出显示。 在android中渲染epub书?

谁能指导我如何在网络视图中突出显示某些文本?大约 2 个月前在以下线程中提出了类似的问题,但尚未收到答案。 https://stackoverflow.com/questions/12948352/highlight-unhighlight-some-text-permanently-in-epub-file-in-android

请帮助我弄清楚如何在 android 中为 epub 阅读器实现突出显示功能。谢谢你。

4

2 回答 2

2
         webview.findAll(htmlTextStr);
         webview.setSelected(true);
         webview.findNext(true);

试试这个, htmlTextStr 必须是您要突出显示的文本

于 2013-02-12T04:54:09.760 回答
1
我根据我在为 android 和 ios 开发原生 epub 播放器的经验给出这个答案。
我以这种方式实现了它。

这是我完成文本突出显示的方式

- 一旦你的 url 在 onload 回调中加载到 webview 中,像这样将 jquery lib 注入到 webview dom


    私人无效 addJQueryJS()
        {
            字符串路径 = "file:///android_asset/JSLibraries/jquery.min.js";
            字符串数据 = "{\"MethodName\":\"onJQueryJSLoaded\",\"MethodArguments\":{}}";
            String callBackToNative = " jsInterface.callNativeMethod('jstoobjc:"+data+"');";
            字符串脚本 = "函数 includeJSFile()"
                                   +"{"
                                   +“函数加载脚本(网址,回调)”
                                   +"{"
                                   +"var script = document.createElement('script');"
                                   +"script.type = '文本/javascript';"
                                   +"script.onload = function () {"
                                   +“回调();”
                                   +"};"
                                   +"script.src = url;"
                                   +"if(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0])"
                                   +"{"
                                   +"(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);"
                                   +"}"
                                   +“其他{回调();}”
                                   +"}"
                                   +"loadScript('"+path+"', function ()"
                                   +"{"
                                   +callBackToNative
                                   +"});"
                                   +"} ; includeJSFile();";
            loadUrl("javascript:"+script);
        }

将每个单词包装成具有唯一 id 的 span

然后创建一个js文件并注入与jquery相同的内容并在其中编写触摸方法


    函数 onTouchMove(e)
    {
        e.preventDefault();
        if((touchendStartStick == true || touchendEndStick == true) && currHVO != undefined)
        {
            var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
            var obj = document.elementFromPoint(touch.pageX-window.pageXOffset,touch.pageY-window.pageYOffset);

            if($(obj).is('span'))
            {
                $(obj).css('背景色','rgba(0,0,255,0.3)');
            }
        }
    };


您还可以获得单词 x,y 宽度高度值。因此您可以在本机视图上显示开始、结束可拖动引脚。

您可以通过将突出显示的第一个和最后一个单词 id 保存到 db 或某个持久存储中来保存突出显示。下次当用户打开这本书时,获取这些单词 id 并突出显示这些跨度。

于 2014-08-08T07:13:50.310 回答