Блик на изображении

Расширение shine добавляет к изображению в элементе div-image анимированный блик: по изображению проходит полоса градиента. Расширение поддерживается на Android и iOS.

Пример
{
  "type": "image",
  "image_url": "https://example.com/image.png",
  "width": {
    "type": "fixed",
    "value": 100
  },
  "height": {
    "type": "fixed",
    "value": 100
  },
  "extensions": [
    {
      "id": "shine",
      "params": {
        "colors": [
          "#00FFFFFF",
          "#FFFFFFFF",
          "#00FFFFFF"
        ],
        "locations": [
          0,
          0.5,
          1
        ],
        "angle": 45,
        "duration": 1000,
        "interval": 1000,
        "delay": 500,
        "cycle_count": 3,
        "on_cycle_start_actions": [
          {
            "log_id": "shine_cycle_started",
            "url": "div-action://set_variable?name=shine_cycles&value=@{shine_cycles+1}"
          }
        ]
      }
    }
  ]
}

В этом примере блик проходит по изображению три раза, а в начале каждого прохода целочисленная переменная shine_cycles увеличивается на единицу.

Параметры

Все параметры необязательные. Параметры, кроме on_cycle_start_actions, поддерживают выражения.

Параметры

Описание

id

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

is_enabled

Включает блик. Если установлено значение false, изображение отображается без блика. По умолчанию: true.

colors

Массив цветов градиента.

locations

Положения цветов в градиенте: числа от 0 до 1, по одному на каждый цвет из colors.

angle

Угол наклона градиента в градусах. По умолчанию: 45.

duration

Длительность одного прохода блика в миллисекундах.

interval

Пауза между проходами в миллисекундах. По умолчанию: 0.

delay

Задержка перед первым проходом в миллисекундах. По умолчанию: 0.

cycle_count

Количество проходов блика. Значение 0 означает бесконечное повторение. По умолчанию: 0.

on_cycle_start_actions

Массив действий, которые выполняются в начале каждого прохода.

Задавайте colors и locations вместе и с одинаковым количеством значений: если количество различается, блик не отображается. Цвета, положения цветов и длительность по умолчанию различаются на Android и iOS, поэтому задавайте эти параметры явно.

Особенности работы

  • Расширение применяется только к элементу div-image.
  • Блик виден только поверх непрозрачных участков изображения.

Подключение

build.gradle

dependencies {
    implementation "com.yandex.div:div-shine:${versions.divkit}"
}

В коде:

val divConfiguration = DivConfiguration.Builder(imageLoader)
    .extension(DivShineExtensionHandler())
    .build()

Необязательные параметры конструктора:

  • logger — получает ошибки разбора параметров расширения.
  • pauseShineObservable — позволяет приложению приостанавливать и возобновлять анимацию блика.
DivKitComponents(
  ...
  extensionHandlers: [
    ShineExtensionHandler()
  ]
)

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

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

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