Кастомизация

Элемент extension — это блок данных, который позволяет изменять поведение и отображение элементов. Расширение можно добавлять к любому элементу.

Дополнительная логика описывается в обработчике расширения DivExtensionHandler.

  1. Подключение
  2. Готовые расширения
    1. Lottie в анимированном gif-изображении
    2. Узнать больше

Подключение

build.gradle

dependencies {
    implementation "com.yandex.div:div-pinch-to-zoom:${versions.divkit}"
    implementation "com.airbnb.android:lottie:${versions.lottie}"
    implementation "com.yandex.div:div-lottie:${versions.lottie}"
}
Скопировано

В коде:

val pinchToZoomConfiguration = DivPinchToZoomConfiguration.Builder(this)
    .host(window)
    .dimColor(0xFF808080.toInt())
    .build()
val rawResProvider = object : DivLottieRawResProvider {
    override fun provideRes(url: String): Int? {
        if (url == "res://love") return R.raw.love_anim
        return null
    }
    override fun provideAssetFile(url: String): String? {
        if (url == "asset://banana") return "lottie/lottie_1.json"
        return null
    }
}    
val divConfiguration = DivConfiguration.Builder(DefaultDivImageLoader(Container.imageManager))
    .experimentConfig(experimentConfig)
    .actionHandler(actionHandler)
    .divLogger(logger)
    .extension(DivPinchToZoomExtensionHandler(pinchToZoomConfiguration))
    .extension(DivLottieExtensionHandler(rawResProvider))
    .build()
val divContext = DivContext(baseContext = this, configuration = divConfiguration)
divView = DivView(divContext)
Скопировано

Готовые расширения

Идентификатор Описание
pinch-to-zoom Увеличивает элемент.
lottie Подключает Lottie-анимации к gif-image.
Идентификатор Описание
pinch-to-zoom Увеличивает элемент.
lottie Подключает Lottie-анимации к gif-image.

Lottie в анимированном gif-изображении

Для подключения анимации к gif-изображению заполните массив extensions:

{
  "extensions": [
    {
      "id": "lottie",
      "params": {
        "lottie_url": "https://assets9.lottiefiles.com/packages/lf20_edpg3c3s.json",        
        "repeat_count": 3, 
        "repeat_mode": "restart" 
      }
    }
  ]
}
Скопировано
Параметры Описание
id

Идентификатор расширения.

lottie_url Обязательная ссылка на Lottie JSON, если не задан параметр lottie_json. Может работать по схемам asset:*{address} или res:*{address} для встроенных ресурсов. Связывание ресурсов по этим схемам происходит через зависимость DivLottieRawResProvider, которая передается в DivLottieExtensionHandler.
lottie_json Обязательный параметр, если не задана ссылка lottie_url. Содержит Lottie JSON.
repeat_count Количество повторов анимации. Для бесконечного количества повторов используйте значение -1.
repeat_mode

Действие после окончания анимации. Может принимать значения:

  • restart — анимация начинается сначала;
  • reverse — анимация идет покадрово в обратном порядке.
Параметры Описание
id

Идентификатор расширения.

lottie_url Обязательная ссылка на Lottie JSON, если не задан параметр lottie_json. Может работать по схемам asset:*{address} или res:*{address} для встроенных ресурсов. Связывание ресурсов по этим схемам происходит через зависимость DivLottieRawResProvider, которая передается в DivLottieExtensionHandler.
lottie_json Обязательный параметр, если не задана ссылка lottie_url. Содержит Lottie JSON.
repeat_count Количество повторов анимации. Для бесконечного количества повторов используйте значение -1.
repeat_mode

Действие после окончания анимации. Может принимать значения:

  • restart — анимация начинается сначала;
  • reverse — анимация идет покадрово в обратном порядке.

Узнать больше

Следите за новостями DivKit в Telegram-канале: http://t.me/divkit_news

Также вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru

Репозиторий DivKit