В моем приложении я использую следующий код для хранения карты, загруженной с сервера.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:id="@+id/scrollView1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_weight="1.0">
<ImageView android:id="@+id/mapImageView"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:scaleType="center"/>
</ScrollView>
в настоящее время я могу прокручивать изображение только вверх и вниз. Мне нужно иметь возможность прокручивать изображение по всем направлениям, а также увеличивать и уменьшать его. Как это можно сделать? Спасибо, Эйял.
Там очень простой ImageViewTouch, который сделал Sephiroto на основе кода приложения Gallery: http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/
Я использую его в проекте, и он отлично работает, с масштабированием и масштабированием, и все, что вам может понадобиться. По умолчанию, когда вы устанавливаете для него изображение, изображение будет уменьшено до размера экрана.
edit: если вы хотите предотвратить автоматическое изменение размера изображения, вы можете изменить метод ImageViewTouchBase.getProperBaseMatrix на следующее:
protected void getProperBaseMatrix(RotateBitmap bitmap, Matrix matrix) {
float viewWidth = getWidth();
float viewHeight = getHeight();
float w = bitmap.getWidth();
float h = bitmap.getHeight();
matrix.reset();
matrix.postConcat(bitmap.getRotateMatrix());
matrix.postTranslate((viewWidth - w) / 2, (viewHeight - h) / 2);
}
Это должно фокусировать изображение без изменения его размера.