WebView加载本地html文件

WebView加载本地文件

在使用webviwe的时候,我们会发现webview的加载速度很慢,下面讲一种优化方案,直接加载本地文件,如js,css,图片等

允许使用js

websettings.setJavaScriptEnabled(true);

加载本地文件

wvContent.setWebViewClient(new WebViewClient(){
    @Nullable
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        WebResourceResponse webResourceResponse = getLocalRes(request);
        if(webResourceResponse != null){
            return webResourceResponse;
        }
        return super.shouldInterceptRequest(view, request);
    }
});
private WebResourceResponse getLocalRes(WebResourceRequest request){
   if(request == null || request.getUrl() == null || request.getUrl().getPath() == null) return null;
   LogUtils.i("path:"+request.getUrl().getPath());
   // 加载本地js文件
   if(request.getUrl().getPath().contains("vue.js")){
       try {
           return new WebResourceResponse("application/x-javascript", "utf-8",
                   getAssets().open("js/vue.js"));
       } catch (IOException e) {
           LogUtils.e(e);
           return null;
       }
   }
// 加载本地图片
if(request.getUrl().getPath().contains("hello.jpg")){
// if(request.getUrl().getPath().contains("hello.png"))
       try {
           return new WebResourceResponse("image/jpg", "utf-8",
                   getAssets().open("pics/hello.jpg"));
//          return new WebResourceResponse("image/png", "utf-8",
//                   getAssets().open("pics/hello.png"));
       } catch (IOException e) {
           LogUtils.e(e);
           return null;
       }
   }
   return null;
}

mimeType
具体的mimeType可以参考浏览器

你可能感兴趣的:(Android)