Как ограничить минимальное увеличение до размера экрана в приложении Android, поддерживающем мультитач?

Я использую код из "Hello Android" для реализации мультитач-экрана. Это позволяет перетаскивать жест и масштабировать масштабирование.

Проблема с этой реализацией состоит в том, что изображение может стать очень маленьким или быть удаленным с экрана. Существует решение, которое позволяет ограничивать масштабирование и панорамирование (http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-6-implementing-the-pinch-zoom-жест /1847). Это ограничивает масштабирование, но до определенного размера. В приложении Android Gallery минимальный размер для увеличения - это размер экрана.

Как этого добиться?

1 ответ

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

Определите minScale (в соответствии с размером представления) и maxScale (в соответствии с исходным масштабом изображения), и перед изменением матрицы преобразования изображения проверьте, попадает ли окончательный масштаб в этот диапазон.

Вам придется применять один и тот же масштабный коэффициент к ширине и высоте, чтобы поддерживать одинаковое соотношение сторон.

--EDIT-- Поставил это на Github: https://github.com/a85/WebComicViewer/blob/master/src/com/rickreation/ui/ZoomableImageView.java

Другие вопросы по тегам