2010-05-31 2 views
7

У меня есть некоторые изображения, которые я загрузил из удаленного источника, хранящегося в переменных Bitmap, и я хочу их отобразить. В дополнение к переключению между этими изображениями пользователь также должен иметь возможность масштабировать и панорамировать их. Моя первая идея состояла в том, чтобы каким-то образом передать их с помощью намерения встроенного приложения галереи, но это не представляется возможным. Решение, предлагаемое в нескольких местах, использует WebView, поскольку оно уже поддерживает масштабирование и панорамирование. Мой вопрос: как мои данные Bitmap попадают в WebView? Должен ли я сначала записать его в файл, который мне придется удалить позже, или есть более простой способ?Android: Самый простой способ сделать WebView отображением растрового изображения?

Или есть еще лучшие способы достижения моей главной цели, которая отображает данные битмапа в качестве масштабируемых и панорамных изображений?

ответ

0

В конце концов, меня не устраивает WebView, поэтому я создал свой собственный просмотр изображений. Дальнейшие описания о том, как я это сделал, можно найти in this post on google groups.

4

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

myWebView.getSettings().setBuiltInZoomControls(true); //to get zoom functionalities 

String url = "http://....."; //url of your image 

String x= "<html><head><meta name=\"viewport\" content=\"width=device-width, minimum-scale=1.0\"/><style type=\"text/css\">html, body {margin: 0;padding: 0;} img {border: none;}</style><head><body style=\"background: black;\"><table><tr><td align=\"center\"><img src=\"" + url + "\" /></td></tr></table></body></html>"; 

myWebView.loadData(x, "text/html", "UTF-8"); 

Об переключении изображений вы можете просто изменить значение URL-адреса и снова вызвать loadData веб-представления.

+0

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

+0

Насколько я знаю, веб-просмотр уже имеет функцию кеширования. Вы можете переопределить его поведение, указав его режим кэширования. myWebView.getSettings(). SetCacheMode (режим); Вы можете ссылаться на эту ссылку. http://developer.android.com/intl/de/reference/android/webkit/WebSettings.html Вы можете использовать «LOAD_CACHE_ELSE_NETWORK» в качестве режима, в котором он использует кеш, если контент существует, даже если истек, загрузка из сети. Другой способ - вручную управлять масштабированием, панорамированием и кешированием самостоятельно, не используя webview. Вы можете посмотреть код ViewImage.java в пакете камеры исходного кода Android. – capecrawler

Смежные вопросы