直接上代码:
webView加载js界面
String contentHtml = "<html lang=\"en\">\n" + " <head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" + "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" + "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover\">\n" + "<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n" + "<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n" + "<meta name=\"format-detection\" content=\"telephone=no\">" + "<link rel=\"stylesheet\" href=\"file:///android_asset/css.css\" type=\"text/css\" /> " + "<script src = \"file:///android_asset/news_js.js\"></script> </head><body id=\"activity-detail\" class=\"zh_CN reward_skin_primary mm_appmsg appmsg_skin_default \">\n" + "<div id=\"js_article\" class=\"rich_media\">\n" + "<div class=\"rich_media_inner\">\n" + "<div id=\"page-content\" class=\"rich_media_area_primary\">\n" + " <div class=\"rich_media_content \" lang== \"en\" id=\"js_content\">\n" + homeListBean.informationContent+ "</div>\n" + "</div>\n" + "</div>\n" + "</div>\n" + "</body>\t</html>"; //支持javascript webView.getSettings().setJavaScriptEnabled(true); // 设置可以支持缩放 webView.getSettings().setSupportZoom(true); // 设置出现缩放工具 webView.getSettings().setBuiltInZoomControls(true); //扩大比例的缩放 webView.getSettings().setUseWideViewPort(true); //自适应屏幕 webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); webView.getSettings().setLoadWithOverviewMode(true); //设置格式 webView.getSettings().setDefaultTextEncodingName("utf-8"); //设置不硬件加速 webView.setLayerType(View.LAYER_TYPE_NONE, null); webView.loadDataWithBaseURL(null,contentHtml, "text/html", "utf-8",null);
其中
"<link rel=\"stylesheet\" href=\"file:///android_asset/css.css\" type=\"text/css\" /> " + "<script src = \"file:///android_asset/news_js.js\"></script>
是表示加载js的样式文件放在assets目录下:
webView加载视频的时候有很多设备只有声音,没有画面,这个时候在androidmanifest.xml中添加应用程序application中设置硬件渲染为true,在Oncreate函数中启用硬件渲染即可。
1、androidmanifest.xml文件设置如下属性:
android:hardwareAccelerated="true"
2、OnCreate中添加:
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
做网页视频只有声音没画面,一般这样可以解决。并不是所有机型都可以,也有特例,比较少。
java.lang.IllegalStateException: Unable to create layer for WebView, size 1080x18459 exceeds max size 8192
这个错误是由于webview在scrollview里设置成了wrap_content,导致webview不确定大小,而且webview启动了硬件加速,由于硬件加速是有个最小的缓存区域的,最终导致超过了缓存范围。
解决方法:
webView.setLayerType(View.LAYER_TYPE_NONE, null);
关闭硬件加速即可,也不能使用软件加速