zoukankan      html  css  js  c++  java
  • android——webview动态修改html界面

    这里动态修改虽然有点夸张,但是,效果还是达到了。

    这里得重点讲一下webviewClient的一个方法:shouldOverrideUrlLoading。这个方法太伟大。啥都能拿到。

    当点击某个超链接需要跳转的时候,这个方法也是第一时间响应到了。返回true,则表示不需要它处理,由程序员自己处理,返回false则表示,这个url还得webview自己跳转。明白这点,就get到了吧。

    我们就是要在跳转到二级界面的时候,来预处理一下二级界面,把二级界面修改修改,再展示给用户。

    问题来了。怎么改?改好了怎么办?

    首先。需要把跳转时间拦截下来,我这里就世界根据二级界面的url来判断什么时候拦截。给shouldOverrideUrlLoading返回一个true,表示,这事,你别管了,我来处理。

    其次,就是怎么改了。这里我用的是jsoup来获取html代码的,也可以采用其他方式,方法很多,我只取一个。这里得开辟一个子线程来操作,毕竟耗时的操作,你敢放在主线程,他就敢抛出异常。

    jsoup本身提供了很多方法供你来操作这个界面,本来我是通过select方法得到element后,再使用element的wrap()方法,给这个element外层包裹上一个标签,给标签设置一个hidden属性。效果也达到了。但是,感觉这么操作有点烦。所以,我是直接使用doc.html方法得到html这个string后,用String的replace方法来去除不需要的代码。

    效果都一样,都达到我的目的。界面改好了。看下图对比就知道了。当然,为了我底部的广告部遮挡住这个页面的底部,我特地在html的后面加了一个空白区域代码。

    最后,改好了代码就是怎么显示了。当然还是webview的方法啦。

    webView.loadData(html, "text/html; charset=UTF-8", null);

    这就完美了吗?当然不是,请看后续。。。。。。

  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/shoneworn/p/7515026.html
Copyright © 2011-2022 走看看