3

これが繰り返しである場合は申し訳ありませんが、私は熱心に検索しましたが、この質問がまだ尋ねられていません...

したがって、Android の昔の時代には、次のようなものを WebView のソース html に追加するだけで済みました。

<img src='file:///android_res/drawable/my.png'/>

そして、WebView に my.png が正しく表示されます。しかし-- Android は現在、これらの新しいベクター ドローアブルをサポートしており (そして私たちが好んで使用しています) 、Android Studio のVector Asset Studioを使用すると、SVG ファイルなどからそれらを簡単にインポートできます。

素晴らしい点は、下位互換性のために、古いデバイスをサポートするために、さまざまな dpi/画面サイズのビルド中に .png が自動的に生成されることです。したがって、古いデバイスをターゲットにしている場合は、そこに .png 画像があります。

私が彼らに到達できれば。私の知る限り、ベクター グラフィックスを使用すると、WebView 内のこれらのリンク壊れてしまうからです。file:///android_res/drawable/ img私が言ったように、.png ファイルが表示されるだけであれば、これは奇妙です。

これを修正する方法をいくつか考えましたが、どれもうまくいきませんでした:

  1. .png はオンザフライで生成され、.apk に含まれているため、生成されたファイルの 1 つをfile:///android_res/drawable-hdpi-v4/my.png. (.apk ファイルを確認したところ、そのうちの 1 つがそこにありました..) しかし、そのような運はありませんでした。壊れた画像。

  2. わかりました、私は考えました-WebViewにベクターオブジェクトを直接表示させる方法があるかもしれません。つまり、おそらく WebView は<img src="file:///android_res/drawable/my_image.xml"/>または類似のものを認識するでしょう。つまり、Chrome は svg を正しくレンダリングできますか? .xml ベクター形式もサポートしているのかもしれません。しかし、ここにもサイコロはありません。(たとえ機能していたとしても、クロム以前の古い webview バージョンをサポートする可能性は低いでしょう。)

  3. 3 番目に試したのは、xxxhdpi サイズの .png を 1 つだけ含めres/drawableて、webview がそれを見つけて表示できるようにすることです。残念ながら、これもうまくいきません。またはディレクトリにあるかどうかに関係なく、.xmlベクターを/drawable入れるだけでpngをブロックするのに十分なようです。/drawable/drawable-xxxhdpi

明らかな質問: WebView にベクター xml (または生成された関連するサポート .png) を表示させる方法はありますか? WebView w/Vector ドローアブルで HTML からドローアブルにアクセスするにはどうすればよいですか? 特に。プログラムで何もする必要はありませんか?

これがどのように機能するか知っている人はいますか?次に行うことは、クロム/アンドロイドのソースを調べて、どのように機能するかを調べることfile:///android_res/drawable/だと思いますが、それは面白くないので、誰かが答えを持っていれば、それは役に立ちます.

私はおそらくここで本当に明白な何かを見逃しています。事前にt​​hx!

更新:私が試した/除外したその他のことには、(1)画像名のアンダースコアの削除(「/」に置き換えられる可能性があると考えていたため)、(2)loadDataWithBaseUrl()のbaseurlのさまざまな順列が含まれます

4

1 に答える 1