Класс Android ImageViewer, поддерживающий Pinch-Zoom и прокрутку
Я ищу библиотеку ImageViewer, которая открывает изображение в моем приложении для данного URI (изображение, полученное с помощью веб-службы, уже хранится в моем приложении в защищенном месте). Мне очень нравится ImageViewer-Activity "Samsung Galaxy S", потому что он использует масштабирование и "прокрутку" по вертикали/горизонтали. Также он очень быстро масштабирует картинку на моем телефоне Samsung:)
Я знаю, что я могу открыть изображение с таким намерением:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "image/*");
startActivity(i);
Вызывается лучший подходящий просмотрщик, когда ни один не найден, возникает событие ActivityNotFoundException. Так что круто!
Но проблема в том, что мне не разрешено открывать изображение с внешним намерением (для целей безопасности). i.e: Пользователь не должен иметь возможность сохранить открытое изображение с помощью опции меню на свою внешнюю SD-карту или отправить это изображение на другую услугу (электронная почта/твиттер или s.o.). Поэтому я должен написать свой собственный ImageViewer-Class (Activity), который можно вызвать только в моем приложении...
К сожалению, я не очень квалифицированный перевод изображений, так есть ли какой-либо проект (или библиотека) с открытым исходным кодом, который охватывает этот прецедент?
Я уже спросил google и нашел этот http://code.google.com/p/android-pinch/, но он не работал очень хорошо (также он не имеет функций прокрутки).
Спасибо за ваши советы:)
Ответы
Ответ 1
Самый простой способ обработки изображений - использовать 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" />
Ответ 2
В этот момент я тоже пользуюсь WebView. Но это концептуально неправильно, WebView не предназначен для отображения изображений, а для отображения веб-контента. WebView громоздкий и громоздкий. Вы ограничили его настройку. Например, мне нужно масштабирование, но я не хочу видеть элементы управления увеличением, или я хочу переместить их в другое место, а затем по умолчанию.
Поэтому я искал эту проблему и нашел несколько решений:
- PhotoView виджет от Chris Banes
- Кроме того, вы можете посмотреть этот учебник от Sony Ericsson (источники доступны) и можете реализовать собственный виджет: part1, part2, part3
- И еще одна библиотека ImageViewZoom в github
UPDATE
Chris Banes была создана потрясающая библиотека, которая поддерживает жесты для масштабирования изображений, см. первую точку выше