Android WebViewは、ローカルの静的リソースとフォントの概要を読み込みます

Android WebViewは、ローカルの静的リソースとフォントの概要を読み込みます

  1. サーバーは、H5で一般的に使用される静的リソースのzipパッケージを送信し、ローカルにダウンロードして解凍します。
  2. WebViewはパッケージ内のhtmlファイルをロードし、WebViewClientを書き換えます
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)

メソッド、リクエストをインターセプトし、URLをインターセプトして照合した後にWebResourceResponseを返します。それ以外の場合は、nullを返します。

  1. H5はローカルフォントをロードする必要があります。次のようなファイルプロトコルを使用できます。
// H5端
@font-face {
		font-family: 'xxx';
		src: url('file:///android_asset/fonts/xxx.ttf');
}

Android側のassets / fontsフォルダーにフォントファイルを置くだけです。
フォントファイルが大きすぎる場合は、フォントファイルをsdディレクトリに配置するか、サーバーがフォントファイルを送信して、フロントエンドがそれに応じてパスを変更することもでき
ます。たとえば、フォントファイルを
storage /に配置します。Android側のemulated / 0 / WebResource / fonts
/ xxx.ttfのフロントエンドはそれに応じて変更できます

@font-face {
		font-family: 'xxx';
		src: url('file:///storage/emulated/0/WebResource/fonts/xxx.ttf');
}

Android側では、傍受やその他の処理を行う必要はありません。WebViewにローカルフォントファイルをロードさせることができます。

発生した問題

  1. jsbを介してStringを渡すと、スタックオーバーフローエラーが発生します。その理由は、AndroidがJsonObjectをStringに使用するためです。データが大きすぎると、JsonObjectはスタックオーバーフローエラーをスローします。
    解決策:jsbはオブジェクトを直接渡します

  2. フロントエンドはインターフェースを呼び出すことができません。
    解決策:フロントエンドは、jsbを介してインターフェースを要求し、ヘッダーを要求するようにクライアントに指示します。
    クライアントはインターフェースを呼び出し、データをフロントエンドに返します

  3. iOSとAndroidには、ローカルフォントをロードする統一された方法がありません。
    解決策:フロントエンドに2つのパッケージ

おすすめ

転載: blog.csdn.net/u011656025/article/details/112802591