Я нашел решение для показа изображений хорошего качества в веб-просмотре. (пусть будет известно, что я ненавижу работать с веб-представлением!)
Основная причина:
«Из коробки» в веб-представлении нет понятия XXHDPI и XHDPI - если вы используете эти изображения на устройстве XXHDPI или XHDPI, изображение слишком большое! Таким образом, вы в конечном итоге используете изображения HDPI / MDPI ... по крайней мере, я сделал, и тогда изображения выглядят размытыми.
Описание решения:
В вашем HTML (я программно создаю его внутри действия) включите масштабирование, а затем программно определите логическую плотность. Вычислите масштаб (то есть 300% на устройстве XXHDPI) и вставьте это значение в ваш HTML, иначе ваш шрифт будет TINY! В пределах доступных для рисования ресурсов убедитесь, что вы используете графику, соответствующую разрешению устройства (например, изображения XXHDPI на устройстве XXHDPI) - это напоминание о замене изображений MDPI в папке res XXHDPI.
Кодовое решение:
// constants needed to put together a nice Android webview-friendly page
private static final String HTML_STYLE = "<style>img{image-rendering: optimizeQuality;} html{font-size: [TBD]% !important}</style>";
private static final String HTML_META = "<meta name='viewport' content='initial-scale=1.0, maximum-scale=1.0, user-scalable=no; target-densitydpi=device-dpi' />";
private static final String HTML_HEAD = "<html><head><title>description</title>"+HTML_META+HTML_STYLE+"</head><body bgcolor=\"black\"><font color=\"white\">";
private static final String HTML_TAIL = "</font></body></html>";
// content to show in the webview
final String strBody = "<ul><li>stuff1</li><li>stuff2</li><li>stuff3</li></ul><p align=\"center\"><img src=\"file:///android_res/drawable/image.png\"></p>";
// get the logical font size
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int iFontScale = (int) (displaymetrics.scaledDensity * 100.0f);
// alter the HTML to programmatically insert the font scale
final String strCompleteHTML = (HTML_HEAD+strBody+HTML_TAIL).replace("[TBD]", String.valueOf(iFontScale));
// configure the webview and load the HTML
final WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setHorizontalScrollBarEnabled(false);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadDataWithBaseURL("file:///android_asset/", strCompleteHTML, "text/html", "utf-8", null);