Кастомизация
Элемент extension — это блок данных, который позволяет изменять поведение и отображение элементов. Расширение можно добавлять к любому элементу.
Дополнительная логика описывается в обработчике расширения DivExtensionHandler
.
Готовые расширения
Идентификатор |
Описание |
Исходный код |
|
Увеличивает элемент. |
|
|
Подключение
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)
Обработчики расширений должны соответствовать протоколу DivExtensionHandler
.
Для подключения обработчика передайте его в DivBlockModelingContext
:
DivBlockModelingContext(
...
extensionHandlers: [
PinchToZoomExtensionHandler(overlayView: rootView),
SomeExtensionHandler()
]
)
Lottie в анимированном gif-изображении
Для подключения анимации к gif-изображению заполните массив extensions
:
{
"extensions": [
{
"id": "lottie",
"params": {
"lottie_url": "https://assets9.lottiefiles.com/packages/lf20_edpg3c3s.json",
"repeat_count": 3,
"repeat_mode": "restart"
}
}
]
}
Параметры |
Описание |
|
Идентификатор расширения. |
|
Обязательная ссылка на Lottie JSON, если не задан параметр |
|
Обязательный параметр, если не задана ссылка |
|
Количество повторов анимации. Для бесконечного количества повторов используйте значение |
|
Действие после окончания анимации. Может принимать значения:
|
Узнать больше
Следите за новостями DivKit в Telegram-канале: http://t.me/divkit_news
Также вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru