Класс Android ImageViewer с поддержкой Pinch-Zoom и Scrolling - PullRequest
15 голосов
/ 03 февраля 2011

Я ищу библиотеку ImageViewer, которая открывает изображение в моем приложении для данного URI (изображение, извлеченное веб-службой, уже хранится в моем приложении в безопасном месте).Мне очень нравится "Samsung Galaxy S" ImageViewer-Activity, потому что он использует масштабирование по пинчу и "прокрутку" по вертикали / горизонтали.Кроме того, он очень быстро масштабирует изображение на моем телефоне Samsung:)

Я знаю, что могу открыть изображение с таким намерением, как это:

Intent i = new Intent(Intent.ACTION_VIEW);  
i.setDataAndType(uri, "image/*");
startActivity(i);

Называется лучший подходящий зритель,когда ничего не найдено, создается ActivityNotFoundException.Так круто!

Но проблема в том, что мне не разрешают открывать изображение с внешним намерением (в целях безопасности).То есть: у пользователя не должно быть возможности сохранить открытое изображение через опцию меню на свою внешнюю SD-карту или отправить это изображение в другой сервис (электронная почта / твиттер или около того).Поэтому я должен написать свой собственный ImageViewer-класс (Activity), который можно вызывать только в моем приложении ... К сожалению, я не очень опытный в преобразовании изображений, так есть ли какой-либо проект с открытым исходным кодом (или библиотека), который охватывает этот вариант использования?

Я уже спросил у Google и нашел этот http://code.google.com/p/android-pinch/, но он не очень хорошо работал (также у него нет функции прокрутки).

Спасибо за ваши советы:)

Ответы [ 2 ]

20 голосов
/ 19 июля 2012

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

Поэтому я искал эту проблему и нашел несколько решений:

  • PhotoView виджет от Криса Бейнса
  • Также вы можете посмотреть этот учебник от Sony Ericsson (источники доступны) и реализовать собственный виджет: part1, part2 , part3
  • И еще одна библиотека ImageViewZoom в github

ОБНОВЛЕНИЕ

Крис Бейнс создал потрясающую библиотеку, которая поддерживает жесты для увеличения изображений, см. Первый пункт выше

16 голосов
/ 03 февраля 2011

Самый простой способ обработки изображений - это использование WebView, если изображение хранится локально или где-то в Интернете.WebView поддерживает масштабирование и другие функции.

Пример Java:

String imageUrl = "file:///local/dir/image.jpg"; // http://example.com/image.jpg
WebView wv = (WebView) findViewById(R.id.yourwebview);
wv.getSettings().setBuiltInZoomControls(true);
wv.loadUrl(imageUrl);

Источник XML:

<WebView android:id="@+id/yourwebview"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
...