Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

В приложении на React необходимо реализовать momentum scroll, идентичный тому, который есть в iOS/MacOS, используя библиотеки react-hammer (для отслеживания gestures) и react-motion (для анимации состояний, возможна замена на аналог)

Для этого, следует вычислить/подобрать правильную функцию анимации на основе пользовательских gestures, используя формулу, описанную в статье:

В основном, пока длится касание, Apple позволяет перемещать экран 1:1.В конце касания, Apple создает импульс, разделив количество пикселей, которые пользователь прошел, и время, которое пользователь на это потратил. Если количество пикселей меньше 10 или время меньше 0,5, импульс будет ограничен до нуля.

В любом случае, как только нам станет известен импульс (скорость), следует умножить его на 0,95 в каждом кадре, а затем переместить экран на столько.

Задача считается выполненной, когда кастомная анимация будет выглядеть идентично нативной (за исключением отсутствия bouncing), а исполнитель сможет обьяснить соответствие своего кода принципу, описанному в статье.

Важно: css-анимация не подходит, т.к. должны быть изменяемые props/state внутри приложения.

App boilerplate: https://codesandbox.io/s/momentum-scrollview-gxw4g?fontsize=14&hidenavigation=1&theme=dark

4 года назад
aleksey_karpenko
Алексей 
35 летУкраина
15 лет в сервисе
Был
2 года назад