- Picasso
- Трансформация
- Круглый аватар
- Новые возможности
- Библиотеки
- Описания популярных библиотек
- Библиотеки для загрузки изображений с котиками
- Графики и диаграммы
- Загрузка изображений с помощью библиотеки Glide. Начало работы
- Почему я должен использовать Glide?
- Добавление Glide в проект
- Gradle
- Maven
- Первый взгляд: Загрузка изображения по URL
- В продолжении
- 10 библиотек, о которых должен знать каждый Android-разработчик
- 1. Retrofit
- 2. Moshi
- 3. Chuck
- 4. Glide
- 5. ThreeTen
- 6. Timber
- 7. Room
- 8. RxJava
- 9. Android KTX
- 10. Dagger
- Заключение
Picasso
Как известно, знаменитый художник Пабло Пикассо любил котов. Есть фотография, подтверждающая его любовь.
Художник нарисовал несколько картин с котом. Одна из них.
А также есть библиотека Picasso, предназначенная для асинхронной подгрузки изображений котов из сети, ресурсов или файловой системы, их кэширования и отображения.
Официальная страница библиотеки от авторов, где можно найти ссылки на документацию и примеры.
В Android Studio прописываем зависимость в Gradle (проверяйте номер свежей версии).
Сейчас на сайте есть новая версия с новым пакетом implementation ‘com.squareup.picasso:picasso:2.71828’, которая является промежуточным вариантом для перехода на ветку 3.х. При этом некоторые вызовы методов изменились. Будьте внимательны. Смотрите новую статью с примерами на Kotlin.
Вот как просто загрузить картинку из сети:
Вы указываете адрес картинки (url), заглушку (placeholder), заглушку для ошибки после трёх неудачных попыток загрузки (error) и в методе into() указываете компонент ImageView, в который загружаете изображение.
При загрузке картинка кэшируется и при повторном запросе на скачивание библиотека может достать картинку из кэша, а не скачивать из интернета, что ускоряет работу приложения. Если кэш будет переполнен или удалён пользователем, то картина снова скачается из сети. Очень удобно.
Если вы храните большие картинки в ресурсах или на внешнем накопителе, то рекомендуется использовать отдельный процесс для загрузки. Библиотека уже настроена на работу в асинхронном режиме, поэтому вы можете использовать её и в этих случаях.
Не забывайте про метод библиотеки fit(), который уменьшает размер картинки перед размещением в ImageView. Это полезно для экономии ресурсов, если вам в реальности нужна маленькая картинка, а не оригинал.
Трансформация
У библиотеки есть специальный метод transform() для манипуляций с изображениями. Вам нужно создать собственную реализацию и передать её в метод. Например, на сайте разработчика приведён пример кадрирования изображения, когда создаётся квадратная картинка по наименьшей стороне.
Сначала создаётся отдельный класс с интерфейсом Transformation, который требует реализовать два метода transform() и key().
Для наглядности разместим два компонента ImageView и посмотрим на результат после нажатия на кнопку.
Другой пример трансформации — перекраска изображения. В Android 5.0 появилась возможность перекрашивать значки встроенными средствами. Для старых устройств можно воспользоваться библиотекой (взято отсюда). Создадим новый класс:
Пробуем на этой же картинке.
Круглый аватар
Ещё один пример, позволяющий создавать круглые картинки, которые можно использовать в качестве аватаров.
Разместим на экране ImageView и зададим размер аватара 150 пикселей.
Если задать нулевой радиус, то будут использоваться размеры картинки для вычисления нужных размеров.
Техника, используемая в примере, не совсем эффективна. Для подобных целей рекомендуется использовать шейдеры. Переписанный пример класса.
В этом примере используется пустой конструктор без параметров, который равносилен значению 0 из предыдущего примера. Вы можете доработать пример, добавив возможность указания радиуса, как это реализовано в том примере.
Новые возможности
В статье описаны новые возможности для версии 2.4.
Появилась возможность встроить собственные обработчики запросов, если у вас используется нестандартная схема вместо http, res и т.п.
Появилась возможность управления приоритетами при запросах, чтобы скачать какое-то изображение раньше других.
Чтобы протестировать библиотеку в боевых условиях, я написал приложение Коты Василия Ложкина. Результатом доволен.
Источник
Библиотеки
Java-библиотеки позволяют хранить код для какой-то задачи в одном месте и использовать в разных проекта, просто подключая её.
В Android Studio библиотека подключается через Gradle. Просто добавляем строку в блок с зависимостями и студия сама скачает и установит библиотеку.
Описания популярных библиотек
Библиотека EventBus — рассылаем и реагируем на события.
joda-time-android — Популярная библиотека Joda-Time для Android, позволяющая работать с датой и временем.
AndroidSlidingUpPanel — выдвигающая панель сверху или снизу.
Rebound — библиотека для создания анимационных эффектов у компонентов
GSON — библиотека для работы с JSON.
Moshi — современная библиотека для работы с JSON.
Card Library — интересная библиотека для создания карточек. Автор библиотеки рассказывает о ней на своей странице. А на ГитХабе сама библиотека в исходных кодах. Сам ещё не использовал, но демо библиотеки мне понравилось.
svg-android — работа с векторными изображениями SVG
Android-Query (AQuery) — простой способ использования асинхронных задач и управления UI-элементами
Библиотека Okio для операций ввода/вывода
Библиотеки для загрузки изображений с котиками
Picasso — библиотека для загрузки изображений с разнообразным функционалом.
Glide — похожа по синтаксису и функционалу на Picasso. Библиотека поддерживает анимированные GIF-файлы.
Universal Image Loader — библиотека для загрузки изображений из сети или локальных носителей
koush/ion — и ещё одна популярная библиотека для асинхронных соединений и загрузок изображений.
Fresco | An image management library — Facebook тоже решил внести свою лепту в создании библиотеки для загрузки изображений.
Coil — относительно новая библиотека на Kotlin с корутинами.
Графики и диаграммы
AChartEngine — библиотека для рисования графиков
GraphView — ещё одна библиотека для графиков. Доступны два вида. Встраивается в разметку активности через код.
HoloGraphLibrary — Ещё одна библиотека для рисования графиков.
blackfizz/EazeGraph — и ещё одна библиотека с разными типами графиков.
Источник
Загрузка изображений с помощью библиотеки Glide. Начало работы
Загрузка изображений в Android является одной из самых важных и часто встречающихся проблем/задач. Glide также как и Picasso может загружать и отображать изображения из многих источников, а также заботится о кешировании и использование небольшого количества памяти при выполнении манипуляций с изображением. Он был использован официальном приложении Google (например, приложение для Google I/O 2015) и так же популярен, как и Picasso. В этой серии уроков мы будем исследуем различия и преимущества Glide над Picasso.
- Glide — начало работы
- Glide — источники для загрузки
- Glide — ListAdapter (ListView, GridView)
- Glide — заглушки & Анимации затухания
- Glide — изменение размера изображения & Масштабирование
- Glide — отображения Gif & видео
- Glide — основы кеширования
- Glide — Приоритет загрузки
- Glide — миниатюры
- Glide — исключения: дебаг и отлов ошибок
- Glide — пользовательские преобразования
- Glide — пользовательские анимации с animate()
- Glide — модули Glide
- Glide — настройка кеширования
- Glide — поворот изображения
Почему я должен использовать Glide?
Опытные Android-разработчики могут пропустить этот раздел, но для начала: вы могли бы спросить себя, почему вы хотите использовать Glide* вместо вашей собственной реализации.
Используя Glide, вы сэкономите себе массу времени и избежите головной боли. Например вам не нужно думать о таких вещах как кешировании изображений, их трансформации и т. д. Также вы сможете избежать ошибок, т. к. библиотека Glide уже протестирована и ошибки исправлены.
* = или другие библиотеки для загрузки изображений, такие как Picasso, ION, etc.
Добавление Glide в проект
Надеюсь, что теперь мы убедили вас использовать библиотеку для для загрузки ваших изображений. Если вы хотите использовать Glide, то это руководство для вас!
В первую очередь добавьте Glide в ваши зависимости. На момент написания статьи последняя версия Glide 3.7.0.
Gradle
Как и большинство зависимостей в Gradle-проект, добавиви одну строчку в build.gradle :
Maven
Glide также поддерживает Maven-проекты:
Первый взгляд: Загрузка изображения по URL
Подобно Picasso, библиотека Glide использует fluent interface. Билдер запросов Glide требует как минимум три параметра:
- with(Context context) — сюда просто передаем Context.
- load(String imageUrl) — здесь необходимо указать, какое изображение должно быть загружено . В основном это будет строка, представляющая из себя URL-адрес картинки.
- into(ImageView targetImageView) — здесь указываем ImageView, в котором должна отобразиться картинка.
Теоретические объяснения всегда труднее понять, так что давайте посмотрим на практический пример:
Вот оно! Если изображение по URL-адресу существует и ваш ImageView является видимым, вы увидите изображения за несколько секунд. В случае, если изображения не существует, Glide вернет ошибку, которые мы рассмотрим позже.
В продолжении
В следующей статье, мы посмотрим на другие варианты загрузки изображений, помимо URL. В частности, мы загрузим изображение из ресурсов Android, локального файла и URI.
Источник
10 библиотек, о которых должен знать каждый Android-разработчик
В 2015 году мы уже публиковали статью о пяти лучших библиотеках, которые мы использовали в то время. Однако платформа Android значительно выросла с тех пор. Как вы знаете, в такой быстро развивающейся области, как разработка программного обеспечения, всё меняется и развивается с молниеносной скоростью. Именно поэтому мы решили, что пришло время обновить список наиболее эффективных Android-библиотек.
Давайте без долгих предисловий перейдем прямо к нашему списку. Сначала мы рассмотрим одну из самых старых, но, по моему убеждению, и одну из самых эффективных Android-библиотек.
1. Retrofit
Retrofit — это типобезопасный HTTP-клиент, позволяющий представить ваш REST API в виде интерфейса. Вы сможете управлять телами, заголовками, параметрами API-запросов и многим другим с помощью аннотаций, что сделает этот процесс простым и понятным. Retrofit также позволяет выполнять синхронные и асинхронные вызовы API.
Ко всему прочему, Retrofit предоставляет отдельный Rx-модуль. Если вы используете Rx, этот модуль вернёт Observable при обращении к API, что позволит связать его с остальной частью вашего приложения. И это лишь некоторые из множества причин, по которым мы по-прежнему любим и используем Retrofit.
2. Moshi
Moshi — это библиотека для конвертации JSON в Java и Kotlin-объекты. Многие воспринимают Moshi как GSON 3.0. Однако эта библиотека превосходит GSON в нескольких аспектах: она быстрее, она поддерживает Kotlin, она обновляется, генерирует предсказуемые исключения и не использует испорченный адаптер DateTime по умолчанию. Кроме того, используя Moshi, процесс конвертации JSON в Java-объекты (и наоборот) становится максимально простым и понятым.
Мы также любим Moshi за поддержку JSON API. JSON API — это спецификация построения API, и многие API, с которыми мы работаем, написаны с использованием этой спецификации. Moshi JSON API облегчает нашу жизнь, поскольку JSON API ответ преобразуется в значимые Java-объекты. Retrofit ещё поддерживает Moshi, и вместе они просто отлично работают.
3. Chuck
Chuck — это HTTP-инспектор для Android, позволяющий «покопаться» в HTTP-истории вашего приложения на мобильном телефоне. HTTP-лог отображается в виде уведомления, которое можно развернуть, чтобы зайти в Chuck и посмотреть детальную информацию. Использование Chuck невероятно обрадует специалистов QA-отдела, поскольку они смогут увидеть, где находится проблема: на стороне Android или на стороне сервера. Эта библиотека иногда может помочь вам больше, чем logcat. Это связано с тем, что ваша HTTP-история сохранится даже в случае непредвиденного закрытия приложения, в то время как logcat время от времени самоочищается после перезапуска.
4. Glide
Вы скорее всего знаете, что загрузка изображений в Android вызывает большие трудности. Даже изменение размера изображения может обернуться катастрофой с OutOfMemoryException . Glide — это библиотека загрузки изображений, которая предоставляет качественный API, позволяющий изменять изображение как вам угодно.
Библиотека позволит вам легко загрузить удалённое изображение в ImageView, определить стабовые изображения, кэшировать и масштабировать изображения и т.д. Просто попробуйте проделать всё это без помощи Glide, и вы сразу поймёте, почему он находится в нашем списке ключевых библиотек. Glide даже поддерживает некоторые распространённые изменения по умолчанию, например, создание изображения круглой формы.
5. ThreeTen
ThreeTen — это библиотека для работы с датой и временем в Android. Это портированная версия JSR-310, который был включен в Java 8 в качестве стандартного пакета java.time.* . Мы любим эту библиотеку, потому что стандартный Android Calendar API превращает работу в сущий кошмар.
ThreeTen сильно уступает JodaTime с точки зрения количества методов и бинарного размера. API данной библиотеки также меньше, чем API JodaTime. Если вы уже используете JodaTime, то, вероятно, вам не стоит переходить на ThreeTen. Тем не менее, я настоятельно рекомендую попробовать ThreeTen, если вы только начинаете работать над новым проектом.
6. Timber
Timber — мощная, но простая библиотека логирования, построенная на базе Android-класса Log . С её помощью вы сможете легко включать и выключать отображение логов. Также библиотека предлагает отличную поддержку логирования форматированных строк и исключений. Благодаря этим преимуществам Timber и входит в наш список ключевых библиотек, которые мы используем практически на всех Android проектах.
7. Room
Room — это официальный ORM для Android, и этот статус оправдывается рядом причин. Эта библиотека отличается удобным API, похожим на Retrofit. Room также в значительной степени опирается на аннотации и стандартный SQL-синтаксис.
Кроме того, Room по умолчанию включает в себя поддержку Rx и LiveData , поэтому вы сможете использовать его, как вам захочется. Основное преимущество Room перед различными ORM — простота. Многие ORM имеют гораздо более сложный API, для использования которого вам потребуется тщательно изучить всю документацию. Благодаря стандартному SQL-синтаксису Room предельно доступен для понимания, что позволяет приступить к работе сразу, не тратя много времени на чтение документации.
8. RxJava
RxJava — это Java-реализация ReactiveX API, которая позволяет связывать асинхронные задачи и события в наблюдаемые (англ. observable) последовательности. Пользователи рассчитывают на то, что современные приложения способны отображать данные в режиме реального времени. Другими словами, они хотят, чтобы информация обновлялась автоматически. Именно в этом аспекте вам и пригодится RxJava.
При получении данных в реальном времени становится чрезвычайно сложно объединить несколько запросов API, переключать потоки и обрабатывать ошибки. Именно здесь RxJava отменно проявляет себя, и именно по этой причине мы начали пользоваться этой библиотекой. Я согласен, что RxJava может показаться запутанной и трудной для изучения, но эта библиотека однозначно заслуживает вашего времени. Даже после перехода на Kotlin, мы продолжили использовать RxJava из-за её преимуществ. В сочетании с Kotlin API она становится ещё лучше благодаря дополнительным функциям-расширениям.
Попробуйте сделать что-то похожее на приведённый выше фрагмент с помощью простой Java. Ну же.
9. Android KTX
Android KTX — это набор расширений-обёрток для Android API в Kotlin, которые делают его более дружелюбным. Главная цель этой библиотеки — сделать Android API более удобным в использовании. Она содержит множество методов и отличных новых функций Kotlin, таких как именованные параметры, лямбда-функции и параметры по умолчанию.
Android KTX отличается наличием множества функций-расширений, и единственный способ узнать о них — погрузиться в код библиотеки, чтобы увидеть, каким образом функции улучшили Android API. Android KTX упрощает способ использования Android API, и по этой причине эта библиотека должна стать основой каждого Android приложения, написанного на Kotlin.
10. Dagger
Наш список 10 лучших библиотек был бы неполным без Dagger. Эта библиотека представляет собой полностью статичный фреймворк внедрения зависимостей во время компиляции. Dagger, так же как и RxJava, действительно сложен для понимания (мне пришлось потратить некоторое время, чтобы понять их пример CoffeeMaker), но определённо заслуживает потраченного времени и усилий.
Внедрение зависимостей (англ. dependency injection) — это способ, позволяющий добавлять небольшие компоненты к другим моделям с минимальными усилиями. Например, если у вас есть модель автомобиля, вы можете добавить к ней шины и с лёгкостью подменить имплементацию шин в будущем — не изменив при этом ни единой строчки кода в моделе автомобиля.
При разработке более сложных приложений вы точно не захотите самостоятельно выполнять задачи по внедрению зависимостей, потому что объём кода быстро увеличивается и становится слишком сложным для поддержки. Dagger избавит вас от этой проблемы, потому что он создает граф внедрения зависимостей во время компиляции посредством обработки аннотаций.
В прошлом году Google добавил отдельный модуль Android Dagger, который позволяет писать меньше шаблонного кода и упрощает внедрение зависимостей.
Заключение
Итак, вот и он: наш список 10 лучших Android-библиотек в 2018 году. Десять отличных библиотек, которые сделают процесс Android-разработки более приятным для каждого, кто решит их использовать. Хотите больше библиотек? Так вышло, что мы в нашей компании разработали несколько собственных Android-библиотек. Можете ознакомиться с ними:
- MjolnirRecyclerView — добавляет в RecyclerView поддержку header, footer, пустых view-компонентов и DiffUtils;
- Goldfinger — упрощает реализацию аутентификации по отпечаткам пальцев;
- DBInspector — просматривает и обеспечивает доступ к базам данных приложения;
- Complexify — простой способ проверить качество пароля пользователя;
- Prince of Versions — обрабатывает обновления приложения внутри приложения.
Источник