ANDROID webview加载本地内容代码

由于我目前的应用大部分为html网页内容,所以之前一直沿用webview.load(url)的方式来加载网页,所以就出现了很多网页加载很慢的情况,看网上所述大部分由加载远程加载js,css导致的。所以就把webview.load(url)调整为加载本地内容,js和css均有本地html文件加载。着实速度提升了不少。是的,js交互事件也是本地的!而网页内容是接口实时返回的。

1,现在本地assets文件下创建一个html源文件,包含一些head和要交互的js事件

      例:openActivity()为预设js事件。<style>img为网页内容中的图片适应设置。viewport为网页适应手机屏幕大小。

      <div id="mobile_content">为实际加载的网页内容的控件标签,所有从网络获取的网页内容代码均会加载在这个           div中。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2, minimum-scale=1, user-scalable=yes">
    <style> img {max-width:100%; box-sizing: border-box; vertical-align: middle;}
    </style>
</head>


<body>
<div class="content">
    <div id="mobile_content"></div>
    <script type="text/javascript">
    	function openActivity(type,id){
    	 window.Android.openActivity(type,id);
    	}
    </script>

</div>
</body>
</html>

2,由于assets文件下的文件是不具备写入权限,所以我们需要首次打开应用时将html源文件copy到sd卡上

      不赘述

3,将准本好的将要加载的实际网页内容添加到html中供webview加载

      // 使用Jsoup获取本地html文件并将内容填充到html文件中

	Document doc = Jsoup.parse(FileUtils.readFileSdcard(FileUtils.SDPATH + "index.html"));//Jsoup解析文件
         //Joup解析url网址  Jsoup.connect(url).get();
        //获取加载内容的div标签
	Element e = doc.getElementById("mobile_content");
	e.append("写入从接口中获取的实际的网页内容代码");
	String content = doc.html();
        //加载
	mWebView.loadDataWithBaseURL(FileUtils.SDPATH+ "index.html", content, "text/html", "utf-8", "");

4,阻塞图片加载,内容加载完后再开启图片加载

     mWebView.getSettings().setLoadsImagesAutomatically(false);阻塞加载

     mWebView.getSettings().setLoadsImagesAutomatically(true);关闭阻塞加载


5,本地js事件设置

     

 class JavaScriptInterface {
		@JavascriptInterface
		public void openActivity(String type, String id) {

		}


		@JavascriptInterface
		@Override
		public String toString() {
			return "Android";
		}
	}

mWebView.addJavascriptInterface(new JavaScriptInterface(), "Android");

到此处,O了!

    




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值