Android как мне масштабировать и прокручивать растровое изображение, которое создается на лету

1

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

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

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

  • 0
    Например, вы могли бы вместо этого использовать WebView или посмотреть, как это делает приложение галереи: android.git.kernel.org/?p=platform/packages/apps/…
  • 0
    Вы можете быть более конкретным?
Теги:
imageview
scrollview
bitmap
zooming

1 ответ

3

Там очень простой 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);
}

Это должно фокусировать изображение без изменения его размера.

  • 0
    При добавлении изображения в эту библиотеку, библиотека автоматически изменяет размер изображения. Вы пытались избежать этого автоматически изменить размер?
  • 0
    Да, я его убрал. Метод, который я изменил, находится в моем обновленном посте.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню