Глоссарий терминов¶
Анимированный компонент¶
Анимированные компоненты - это компоненты, которые Reanimated может анимировать. Reanimated поставляется с небольшим количеством встроенных компонентов, таких как Animated.View
, Animated.ScrollView
или Animated.ScrollView
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Для компонентов, не являющихся частью Reanimated, чтобы сделать их пропсы и стили анимируемыми, необходимо обернуть их с помощью createAnimatedComponent
:
1 2 3 4 5 6 |
|
Общие значения¶
Общие значения являются движущим фактором всех ваших анимаций в Reanimated.
Они определяются с помощью хука useSharedValue
:
1 |
|
и доступ к ним и их изменение осуществляется через их свойство .value
:
1 2 3 4 5 6 7 8 9 |
|
Это может быть значение любого типа. При использовании общие значения автоматически синхронизируются между JavaScript-потоком и UI-потоком.
Анимируемое значение¶
Анимируемое значение относится к типу значений, которые могут быть использованы для анимации. К таким значениям относятся числа, строки и массивы чисел.
Строковые значения могут быть анимированы, если они имеют определенный формат, например 10deg
, 21%
или даже цвет, например ffaabb
или rgba(100, 200, 100, 0.7)
.
Функция анимации¶
Анимационные функции - это функции, позволяющие создавать анимацию. Они представляют собой строительные блоки, описывающие поведение анимации.
Reanimated поставляется с 3 встроенными функциями анимации:
withSpring
позволяет создавать анимацию на основе пружин.withTiming
позволяет создать анимацию, основанную на длительности и easingwithDecay
позволяет создавать анимацию, имитирующую движение объектов с заданной скоростью замедления.
Эти функции можно комбинировать с модификаторами анимации для создания насыщенных и сложных анимаций.
Модификатор анимации¶
Модификаторы анимации - это функции, используемые для настройки анимации.
Reanimated поставляется с 3 встроенными модификаторами:
withDelay
позволяет добавить задержку перед началом анимацииwithRepeat
позволяет повторять анимацию определенное количество разwithSequence
позволяет выстраивать анимацию в цепочку друг за другом
Объект анимации¶
Объект анимации - это значение, возвращаемое из функций анимации и модификаторов, которое содержит текущее состояние анимации, включая условия ее начала и окончания, а также функцию onFrame
. Эти значения позволяют вычислить состояние анимации для каждого кадра.
При передаче объекта анимации в общее значение он автоматически рассматривается как анимируемое значение.
Например, рассмотрим следующий код:
1 |
|
Несмотря на то, что withSpring
возвращает объект анимации, конечный результат, хранящийся в общем значении, является просто числом.
Анимации в инлайн-стилистике¶
Передача общих значений непосредственно в свойство style
без использования useAnimatedStyle
.
Например:
1 2 3 4 5 |
|
Worklet¶
Ворклеты - это короткие JavaScript-функции, которые могут выполняться в потоке UI thread. Их также можно запускать в потоке JavaScript, как и функции в коде.
В большинстве случаев при работе с Reanimated код автоматически workletized и по умолчанию выполняется в потоке UI.
1 2 3 4 |
|
Вы можете создавать собственные worklet'ы, используя директиву "worklet";
в верхней части функции.
1 2 3 4 |
|
runOnUI
позволяет вручную запускать ворклеты в потоке UI:
1 2 3 4 5 6 7 8 9 |
|
to workletize¶
Преобразование JavaScript-функции в сериализуемый объект, который может быть скопирован и запущен на UI thread.
Функции, помеченные директивой "worklet";
, автоматически подхватываются и обрабатываются плагином Reanimated Babel.
JavaScript-поток¶
JavaScript-поток (или сокращенно JS-поток) отвечает за выполнение JavaScript-кода в приложении.
Это основное место, где выполняется код приложения React Native.
UI thread¶
Поток UI отвечает за обработку обновлений пользовательского интерфейса. Также известен как основной поток.
Подробнее о нем можно узнать, прочитав статью Threading model в официальной документации React Native.
Реанимированный плагин Babel¶
Плагин выполняет автоматическую workletization некоторых функций, используемых в Reanimated, чтобы уменьшить количество кодового кода.
Подробности можно узнать, прочитав Reanimated Babel plugin README.