Android как мне масштабировать и прокручивать растровое изображение, которое создается на лету - PullRequest
1 голос
/ 03 июля 2011

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

<?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>

в настоящее времяЯ могу прокручивать изображение только вверх и вниз.Мне нужно иметь возможность прокручивать изображение во всех направлениях, а также увеличивать и уменьшать его.Как это можно сделать?Спасибо, Эяль.

1 Ответ

3 голосов
/ 03 июля 2011

Существует очень простой 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);
}

Это должно центрировать изображение без изменения его размера.*

...