ホームページ  >  記事  >  ウェブフロントエンド  >  Android Webview は、外部 html_html/css_WEB-ITnose をロードするときに、ローカルの js、css、およびその他のリソース ファイルをロードすることを選択します。

Android Webview は、外部 html_html/css_WEB-ITnose をロードするときに、ローカルの js、css、およびその他のリソース ファイルをロードすることを選択します。

WBOY
WBOYオリジナル
2016-06-24 11:50:011142ブラウズ

WebView を使用して Web ページを読み込む場合、js jquery パッケージ、CSS、画像、その他のリソースなどの比較的大きなリソース ファイルがいくつかあります。これらをネットワークから直接読み込むと、ページの読み込みが遅くなり、より多くの時間を消費します。したがって、これらのファイルはアセットに配置し、アプリにパッケージ化する必要があります。

この問題を解決するには、API 11 (HONEYCOMB) で提供される shouldInterceptRequest(WebView view, String url) 関数を使用してローカル リソースをロードする必要があります。 API 21 では、このメソッドは非推奨となり、新しい shouldInterceptRequest がオーバーロードされ、url が request に置き換えられました。

たとえば、アセットに配置された画像 icon.png があり、外部 HTML が読み込まれている場合、アセット内の画像をネットワークから再取得することなく、直接取り出して読み込む必要があります。もちろん、HTML 内の画像リンクを file:///android_asset/icon.png に変更することはできますが、その場合、この HTML は Android、iOS、および WAP で共有できません。

実装コード:

webView.setWebViewClient(new WebViewClient() {            @Override            public WebResourceResponse shouldInterceptRequest(WebView view, String url) {                WebResourceResponse response = null;                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){                    response = super.shouldInterceptRequest(view,url);                    if (url.contains("icon.png")){                        try {                            response = new WebResourceResponse("image/png","UTF-8",getAssets().open("icon.png"));                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }//                return super.shouldInterceptRequest(view, url);                return  response;            }            @TargetApi(Build.VERSION_CODES.LOLLIPOP)            @Override            public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {                WebResourceResponse response = null;                response =  super.shouldInterceptRequest(view, request);                if (url.contains("icon.png")){                    try {                        response = new WebResourceResponse("image/png","UTF-8",getAssets().open("icon.png"));                    } catch (IOException e) {                        e.printStackTrace();                    }                }                return response;            }}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。