Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Библиотека Subsampling Scale Image View

Иногда требуется использовать очень большую картинку, например, карту в высоком разрешении. Но если использовать решение "в лоб", то можно наткнуться на переполнение памяти, особенно, на слабых устройствах. Библиотека позволяет избежать этой проблемы, на лету меняя разрешение исходной картинки под размеры экрана. Дальше пользователь может увеличивать картинку жестами. Всё происходит плавно и с анимацией. Также доступны другие эффекты, например, повороты.

Автор библиотеки тестировал на картинке с размером 20000x20000px! Тормоза неизбежны, но ведь работало. Попробуйте сами загрузить такую гигантскую картинку и вывести на экран. Вряд ли получится.

Домашняя страница: Гитхаб

Установим зависимость в Gradle.


compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'

Разметка должна использовать кастомный ImageView на всю область экрана.


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

Осталось только прописать компонент и указать источник картинки.


SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(R.id.imageView);
imageView.setImage(ImageSource.resource(R.drawable.cat));
// ... или ...
imageView.setImage(ImageSource.asset("map.png"))
// ... или ...
imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));

При использовании Drawable создайте папку res/drawable-nodpi, чтобы избежать изменения размера картинки.

Этого достаточно для базового функционала библиотеки. Двойной тап увеличит картинку, повторный двойной тап уменьшит её до минимального размера. Также можно использовать щипок двумя пальцами для увеличения или уменьшения картинки.

На странице Wiki можно почитать о дополнительных возможностях библиотеки. А также рекомендую скачать готовую программу на Google Play, чтобы увидеть все примеры и получить представление о работе.

Реклама