WebView автоматически масштабирует локальные изображения - PullRequest
1 голос
/ 03 марта 2011

Мой вопрос похож на этот , но достаточно отличается, что я собираюсь опубликовать новый.

Я пишу программу просмотра изображений, которая загружает PNG с пультасервер, сохраняет его в хранилище, а затем открывает его в WebView, так что я получаю мультитач зум бесплатно.Эти изображения обычно являются документами, поэтому пользователь может захотеть увеличить изображение очень далеко.Я посылаю изображения с достаточным разрешением, чтобы включить это, но WebView, кажется, «помогает» мне, масштабируя мое изображение до размера экрана, с которого нужно начать.Это означает, что мое изображение имеет слишком низкое разрешение, чтобы его можно было правильно увеличить.

Я искал это вокруг, и я обнаружил, что некоторые другие люди сталкивались с подобной проблемой , но единственное возможное решение, которое я нашел, было разрезать изображениев плитки и собирать их с помощью HTML перед загрузкой в ​​представление.Это похоже на пометку, и я спрашиваю улей StackOverflow, есть ли у кого-либо способ отключить это масштабирование или есть альтернативный способ получить то, что мне нужно.

Код, который инициализирует WebView:

viewer = (WebView)findViewById(R.id.activity_imageviewer_webview);
viewer.setBackgroundColor(0);
WebSettings settings = viewer.getSettings();
settings.setJavaScriptEnabled(false);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

Код, который загружает изображение в WebView:

viewer.loadUrl(Uri.fromFile(imageFile).toString());

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

В итоге мы решили этот трудный путь, используя метод листов. Мы разделяем изображение на вертикальные фрагменты на нашем сервере, а затем отправляем их для повторной сборки с использованием HTML на клиенте, прежде чем поместить его в WebView.

Кажется, на самом деле это работает довольно хорошо. Графика определенно более высокого качества, и текст легко читается в ней. Единственная проблема, которую мы видели, заключается в том, что производительность панорамирования и масштабирования снижается, что по неизвестным мне (пока) причинам крайне плохо только для Nexus S.

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

0 голосов
/ 14 апреля 2011

Изменение свойств области просмотра может помочь, взгляните на метатег

<meta name="viewport" ...>

в заголовке html

...