Глоссарий терминов¶
Анимированный компонент¶
Анимированные компоненты - это компоненты, которые 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.