Сопрограммы и функции расширения для спасения

Если вы разрабатываете приложение для Android и храните изображения в облачном хранилище для Firebase для последующего отображения в вашем приложении, вы, вероятно, используете библиотеку загрузки изображений, такую ​​как Glide, Picasso, Fresco или Firebase-ui-storage. Да, эти библиотеки справятся со своей задачей, но что, если я скажу вам, что есть более приятный и эффективный способ?

В этой статье я познакомлю вас с новым парнем в городе, Coil, и покажу, как использовать его для загрузки образов в облачное хранилище с меньшим количеством шаблонного кода.
Я предполагаю, что вы уже знакомы с облачным хранилищем для Firebase и уже знаете, как использовать его в приложении для Android. Если нет, то можете заглянуть в Документацию.

Катушка (загрузчик изображений сопрограмм)

Coil - это библиотека загрузки изображений с открытым исходным кодом для Android. В отличие от других ранее существовавших библиотек (Glide, Picasso и т. Д.), Coil была полностью построена на Kotlin и поддерживается Coroutines. Это также:

  • Простота в использовании: потому что он использует некоторые функции языка Kotlin, такие как Kotlin Extension Functions, что позволяет сделать ваш код простым и лаконичным.
  • Легковес: он добавляет ~ 2000 методов к вашему APK, что почти такое же, как у Picasso, и немного меньше, чем у Glide.
  • Быстро. Его скорость вполне сопоставима с Picasso и Glide, как показано в этом тесте.

Начиная

Поскольку Coil использует Java 8, одним из предварительных условий является включение Java 8 в свой проект Android. Это можно сделать в build.gradle файле модуля:

Затем вы добавляете его как зависимость от того же файла:

dependencies {
    // ... other dependencies
    implementation 'io.coil-kt:coil:0.11.0'
}

использование

Самый простой способ использовать Coil - это вызвать функции расширения ImageView.load(), которые предоставляет библиотека:

// URL
imageView.load("https://www.example.com/image.jpg")

// Resource
imageView.load(R.drawable.image)

Вы также можете указать placeholder или любую другую дополнительную конфигурацию для конечной лямбды:

imageView.load("https://www.example.com/image.jpg") {
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}

Помимо функций расширения, Coil также предоставляет другие способы загрузки изображений, такие как Запросы и Загрузчики изображений, которые я не буду рассматривать для краткости. Но подробнее о них вы можете узнать в их Документации.

Облачное хранилище Coil Plus для Firebase

Допустим, у вас есть изображение, хранящееся в облачном хранилище для Firebase, к которому можно получить доступ, используя путь users / me / profile.png. Чтобы отобразить это изображение на ImageView в вашем приложении для Android, вам может потребоваться сначала получить его download URL, а затем передать его в Coil, как предлагают документы:

Выглядит просто, правда? Но что, если бы я сказал вам, что даже это можно упростить?
Вот тут-то и появляется firecoil.

firecoil: Firebase и Coil

Firecoil - это библиотека с открытым исходным кодом, которая позволяет загружать изображения с помощью Coil, просто предоставляя StorageReference указанного изображения. Чтобы использовать firecoil, вам нужно добавить jitpack maven в build.gradle файл вашего проекта:

repositories {
    // ...
    maven { url 'https://jitpack.io' }
}

Затем добавьте зависимость firecoil в build.gradle файл вашего модуля:

implementation 'com.github.rosariopfernandes:firecoil:0.2.0'

Теперь с firecoil вам больше не нужно получать URL-адрес для загрузки. Вы можете просто передать свой StorageReference функции расширения ImageView.load(), предоставляемой библиотекой:

Поскольку firecoil построен поверх Coil, вы также можете использовать замыкающую лямбду, чтобы указать дополнительную конфигурацию:

Вот и все! С помощью этого простого и лаконичного фрагмента ваше приложение должно теперь отображать красивые изображения.

Ресурсы