我的问题目前很难解决。
我应该和我的同事一起开发一个 Android 应用程序,它在 iOS 上做同样的事情。
在开发结束时,我们应该交付两个功能相同且外观相似的应用程序(请放心,Android 不会强制执行 iOS 指南,反之亦然),以便体验相同身临其境。
要提供的最重要的功能之一是一个漂亮的白色空圆圈动画,它会在圆圈内发射类似雪花的粒子。圆圈可以通过滚动或简单的弹跳/滑动动画移动。
想象一下一个带有白色边框的圆圈,白色薄膜上有白色颗粒。所有这些粒子都被吸引到中心并且它们的速度基数在变化(但没有加速!)。假设最快的粒子在到达中心之前“死亡”。当然,可以通过生命周期和速度设置轻松设置的东西。
我的伙伴,和我一样是大三学生,正在使用iOS' CAEmitterLayer她在一两天内获得的结果非常好,非常接近我们应该达到的结果。
在我这边,我真的很挣扎。像她一样,我在任何动画和 UI/UX 方面都没有任何经验。 在 Android 上寻找粒子生成器/发射器时,我偶然发现了这个漂亮的库:https://github.com/plattysoft/Leonids它似乎可以提供我正在寻找的东西。
但是我在使用这个库时有一些 Unresolved 问题:
- 我不能或不知道我是否可以将发射器放在一个圆圈内;
- 我相信如果发射器卡在其上的圆圈正在移动(滚动/动画),则很可能粒子不会随圆圈一起移动;
正如我所说,我的 iOS 同事解决了这些问题。甚至移动部分:我们正在与我们的经理交谈,他告诉我们“如果圆圈移动怎么办?”她立即在我们面前尝试了。我被震撼了...
她告诉我,我应该寻找一种方法将我的粒子包含在一个容器中(有道理^^)并且我的圆形 View 应该用图层裁剪,这样粒子就不会离开圆圈,尤其是当整个事物都在移动时。
感谢上述 Android 库,这就是我取得的成就:
- 我可以发射粒子,定义它们的形状、比例/大小、速度以及发射角度;
- 我可以将粒子发射器连接到 View 。它将使用 View X&Y 坐标 来发射粒子,但基于XML 的圆形可绘制对象 会出现问题,例如here。是它包含在 square-based View 中(具有
height
和width
)并且出于奇怪的原因,我的圆圈在上面绘制所述基于平方的 View 。
我希望我能找到另一个库,但如果当前的库在工作,为什么不呢?只是试试我的运气 ^^
感谢您的帮助!
最佳答案
Leonids 的库作者提出了一个建议,可能会帮助您达到预期的效果:
( source )
plattysoft commented on Sep 19, 2016
Interesting, this is not currently supported, but you could make fork and tweak the library to add an initializer that takes a radius and spawns particles around that with a random angle.
The second part it to get attracted by the center. That should be a modifier or maybe an initializer where the acceleration depends on the angle.
Tricky, and not supported directly, but doable.
关于android - Android 上是否有类似 iOS CAEmitterLayer 的圆形发射器的粒子发射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064225/