Анимация
Установите переходы через animations для поддерживаемых атрибутов View. После того, как свойство получит новое целевое значение, CapDrive рисует промежуточные состояния в соответствии с заявленной длительностью и кривой.
Как запустить анимацию
animations — это массив объявлений анимации на View. property указывает атрибут для управления, например opacity или sweepAngle. Когда целевое значение View изменяется, соответствующая анимация начинает переходить; простое добавление анимации к фиксированным атрибутам не приведет к автоматическим изменениям.
Список свойств, поддерживаемых каждым компонентом, представлен на его странице. Если вам нужно динамически добавлять, удалять или переупорядочивать суб-View, сохраняйте для них стабильный key, чтобы обновления по-прежнему соответствовали тому же объекту рисования.
Время, повторение и угол
Единица измерения duration, delay — секунды, продолжительность по умолчанию — 0,25 секунды, задержка — ноль, а кривая по умолчанию — easeInOut. from/to может уточнить начальную и конечную цели, repeat и autoreverse контролируют повторение и возврат. Одно и то же свойство должно контролироваться только одной декларацией.
Атрибуты периода могут использовать wrap для выбора путей перехода между периодами. Например, startAngle будет использовать wrap: 360 от 350° до 10°. sweepAngle представляет фактический угол поворота, сохраняя положительное и отрицательное направления, и не поддерживает wrap.
Пример: дуга скорости
После выбора скорости в примере диапазон скоростей от 0–200 преобразуется в 0–360°. При изменении скорости с 50 на 100 угол цели меняется с 90° на 180°, а для завершения перехода дуге требуется 0,25 секунды. Текущая единица скорости используется для измерения диапазона; горизонтальная линия отображается, когда нет измерений.
function main() {
const speed = $data.current.speed?.value;
if (speed == null) {
return (
<Text fontSize={32} color={$env.foreground}>
—
</Text>
);
}
return (
<Circle
width={120}
height={120}
background="clear"
stroke={$env.accent}
lineWidth={8}
startAngle={-90}
sweepAngle={Math.max(0, Math.min(1, speed / 200)) * 360}
animations={[
{ property: 'sweepAngle', duration: 0.25, curve: 'easeOut' },
]}
/>
);
}
Изменения контента и динамические эффекты
contentAnimation используется для обновления содержимого, такого как текст, изображения или данные диаграммы. Тип поддержки определяется конкретным компонентом, например цифровыми текстовыми переходами и интерполяцией графических данных.
Интерполяция формы требует соответствующих структур до и после, например, количество точек и настройки закрытия Polyline одинаковы, а последовательность команд Path одинакова. Обновляйте напрямую, если структура несовместима. Анимация выполняется стороной рисования и не требует синхронизации цикла в main(); анимация не увеличивает фактическую частоту обновления датчика или OBD.