これが繰り返しである場合は申し訳ありませんが、私は熱心に検索しましたが、この質問がまだ尋ねられていません...
したがって、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 ファイルが表示されるだけであれば、これは奇妙です。
これを修正する方法をいくつか考えましたが、どれもうまくいきませんでした:
.png はオンザフライで生成され、.apk に含まれているため、生成されたファイルの 1 つを
file:///android_res/drawable-hdpi-v4/my.png
. (.apk ファイルを確認したところ、そのうちの 1 つがそこにありました..) しかし、そのような運はありませんでした。壊れた画像。わかりました、私は考えました-WebViewにベクターオブジェクトを直接表示させる方法があるかもしれません。つまり、おそらく WebView は
<img src="file:///android_res/drawable/my_image.xml"/>
または類似のものを認識するでしょう。つまり、Chrome は svg を正しくレンダリングできますか? .xml ベクター形式もサポートしているのかもしれません。しかし、ここにもサイコロはありません。(たとえ機能していたとしても、クロム以前の古い webview バージョンをサポートする可能性は低いでしょう。)3 番目に試したのは、xxxhdpi サイズの .png を 1 つだけ含め
res/drawable
て、webview がそれを見つけて表示できるようにすることです。残念ながら、これもうまくいきません。またはディレクトリにあるかどうかに関係なく、.xmlベクターを/drawable
入れるだけでpngをブロックするのに十分なようです。/drawable
/drawable-xxxhdpi
明らかな質問: WebView にベクター xml (または生成された関連するサポート .png) を表示させる方法はありますか? WebView w/Vector ドローアブルで HTML からドローアブルにアクセスするにはどうすればよいですか? 特に。プログラムで何もする必要はありませんか?
これがどのように機能するか知っている人はいますか?次に行うことは、クロム/アンドロイドのソースを調べて、どのように機能するかを調べることfile:///android_res/drawable/
だと思いますが、それは面白くないので、誰かが答えを持っていれば、それは役に立ちます.
私はおそらくここで本当に明白な何かを見逃しています。事前にthx!
更新:私が試した/除外したその他のことには、(1)画像名のアンダースコアの削除(「/」に置き換えられる可能性があると考えていたため)、(2)loadDataWithBaseUrl()のbaseurlのさまざまな順列が含まれます