Android локальное изображение, отображаемое через веб-просмотр, размыто - PullRequest
4 голосов
/ 29 июня 2011

У меня есть веб-просмотр, загружающий изображение из ресурсов / папки.Изображение отображается увеличенным на 100% (или более) и не имеет такой же четкости, как реальное изображение при 100%

. Как настроить веб-вид на отображение уменьшенного изображения, а не снизить качество?

Кроме того, я использую веб-просмотр, потому что ImageView потребовал бы, чтобы я заново изобрел плавную прокрутку, нажмите, чтобы увеличить масштаб, ущипнуть, чтобы увеличить и т.д.

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Я помню эту проблему.Webview автоматически уменьшает большие изображения, вероятно, из-за проблем с памятью.Если вы хотите контролировать качество, вы, вероятно, должны использовать ImageView.Вы также можете попробовать использовать приложение галереи.

1 голос
/ 28 февраля 2014

Я нашел решение для показа изображений хорошего качества в веб-просмотре. (пусть будет известно, что я ненавижу работать с веб-представлением!)

Основная причина: «Из коробки» в веб-представлении нет понятия 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);
0 голосов
/ 27 сентября 2016

Не уверен, зачем нужны все эти довольно сложные ответы?

Я решил проблему, когда изображение размером 200 пикселей было размытым, используя изображение размером 400 пикселей и просто уменьшил его в 2 раза в CSS Элемент DIV установлен в 200px и background-size: содержит / 200px 50px; решил это для меня

...