Функция

Недавно я работал над очень хорошей функцией, динамической анимацией. У нас была статическая анимация на фоновом экране входа в систему, и команда решила сделать ее более модульной, предоставив возможность отображать другую анимацию в определенном месте. диапазон дат (особенно праздники, такие как День матери или Рождество), но без необходимости отправки новой версии в магазины приложений, c̵o̵f̵f̵ ̵c̵o̵f̵f̵ ̵f̵i̵r̵e̵s̵t̵o̵r̵e̵.

Местная анимация

После завершения загрузки и кэширования (чтобы сохранить файлы анимации в папке кеша устройства) я заметил, что представление анимации Lottie не позволяет загружать анимацию непосредственно из папки кеша, предоставляя только локальный путь. Можно просто загрузить из папки Raw and Assets или указать строку JSON (не очень хорошая идея, помните, что String имеет ограниченный размер).
Я просмотрел документацию сайта. и искал в интернете, ничего не нашел. К счастью, у Lottie открытый исходный код, и, немного изучив исходный код, я смог найти решение проблемы. Ключом к решению этой проблемы является то, что называется LottieCompositionLottieCompositionFactory). Согласно документации кода, LottieComposition это:

«Модель композиции After Effects/Bodymovin. Это сериализованная модель, из которой будет создана анимация. Чтобы создать его, используйте LottieCompositionFactory. Его можно использовать с LottieAnimationView или LottieDrawable».

Именно то, что мне было нужно.

Код довольно прост. Первый шаг — создать InputStream, используя наш путь к файлу. Нам нужно указать путь в виде String и размер буфера (я использую 1 МБ, 1024)

Как рекомендуется в документации, нам нужно использовать LottieCompositionFactory для создания экземпляра LottieComposition. Этот фабричный класс предоставляет простой способ вернуть LottieComposition из потока. Мы можем сделать это двумя способами.

Асинхронный:

Альтернативно, синхронный:

Для завершения установите результат в представлении анимации Лотти, используя метод setComposition.

Вот и все. Очень просто!

Вы можете найти полный проект по следующему адресу на Github:



Если у вас есть вопросы или предложения, оставьте комментарий и не забудьте подписаться на другие руководства. 🤠

Спасибо за чтение.