Есть ли какой-нибудь излучатель частиц на Android, такой как iOS CAEmitterLayer для кругового излучателя?
Моя проблема трудно решить на данный момент.
Я должен разработать приложение для Android вместе с моим коллегой, который делает то же самое, но на iOS.
В конце разработки мы должны предоставить два приложения, которые делают одно и то же и выглядят одинаково (будьте уверены, ничего похожего на ориентиры iOS для Android и наоборот), чтобы опыт был одинаковым и захватывающим.
Одной из главных функций является приятная анимация белого пустого круга, который испускает снежные частицы внутри круга. Круг может двигаться с помощью прокрутки или просто подпрыгивая / скользящей анимации.
Итак, представьте круг с белой каймой и белыми частицами, выходящими из этой белой мембраны. Все эти частицы притягиваются к центру, и их скорость изменяется (но без ускорения!). Предполагается, что самые быстрые частицы "умирают" до достижения центра. Что-то, что может быть легко установлено через настройки для жизни и скорости, конечно.
Моя напарница, такая же младшая, как я, использует iOS' CAEmitterLayer, и результаты, которые она получила за день или два, великолепны и действительно близки к тому, чего мы должны достичь.
На моей стороне я действительно борюсь. Как и она, у меня нет никакого опыта в анимации и UI/UX. В поисках генератора / эмиттера частиц на Android я наткнулся на эту красивую библиотеку: https://github.com/plattysoft/Leonids и, похоже, она может предложить то, что я ищу.
Но у меня есть несколько нерешенных проблем с использованием этой библиотеки:
- Я не могу или не знаю, могу ли я разместить излучатели внутри круга;
- Я считаю, что если круг, на котором зацеплен излучатель, движется (прокрутка / анимация), существует большая вероятность того, что частицы не будут двигаться вместе с кругом;
Как я уже сказал, мой коллега по iOS решил эти проблемы. Даже движущаяся часть: мы разговаривали с нашим менеджером, который сказал "что делать, если кружок движется?" и она сразу же попробовала это перед нами. Я был потрясен...
Она сказала мне, что я должен искать способ удержать мои частицы внутри контейнера (имеет смысл ^^) и что мой круговой вид должен быть обрезан слоями, чтобы частицы не покидали круг, особенно если все это движется,
Это то, чего я добился благодаря вышеупомянутой библиотеке Android:
- Я могу испускать частицы, определять их форму, их масштаб / размер, их скорость и в некоторой степени угол излучения;
- Я могу подключить излучатель частиц к виду. Он будет использовать координаты вида X&Y для испускания частиц, но проблема с кругом на основе XML, который можно нарисовать, как здесь, заключается в том, что он содержится внутри квадратного вида (с
height
иwidth
) и по странной причине мой круг нарисован выше этого квадратного вида.
Я надеюсь, что смогу найти другую библиотеку, но если текущая работает, почему бы и нет? Просто пытаюсь испытать мою удачу
Спасибо за помощь!
1 ответ
Автор библиотеки Леонид внес предложение, которое может помочь вам достичь желаемого эффекта:
( источник)
Plattysoft прокомментировал 19 сентября 2016 г.
Интересно, что в настоящее время это не поддерживается, но вы можете сделать форк и настроить библиотеку, чтобы добавить инициализатор, который принимает радиус и порождает частицы со случайным углом.
Вторая часть - привлечь центр. Это должен быть модификатор или инициализатор, где ускорение зависит от угла.
Хитрый, и не поддерживается напрямую, но выполнимо.