安卓系统上有没有像iOS CAEmitterLayer这样的圆形发射器粒子发射器



到目前为止,我的问题很难解决。

我应该和我的同事一起开发一个Android应用程序,在iOS上做同样的事情。

在开发结束时,我们应该提供两个功能相同、外观相似的应用程序(请放心,没有什么能像安卓系统上强制使用的iOS指南,反之亦然),以便体验相同且身临其境。

最重要的功能之一是一个白色空圆圈的动画,它在圆圈内发射出雪状粒子。圆可以通过滚动或简单的反弹/滑动动画来移动。

想象一个有白色边界的圆圈,白色粒子从白色薄膜上脱落。所有这些粒子都被吸引到中心,它们的速度基础在变化(但没有加速度!)。假设最快的粒子在到达中心之前"死亡"。当然,可以通过寿命和速度设置轻松设置。

我的伴侣和我一样是大三学生,她正在使用iOS的CAEmitterLayer,她在一两天内获得的结果非常棒,非常接近我们应该达到的目标。

就我而言,我真的很挣扎。和她一样,我在任何动画和UI/UX方面都没有任何经验。在Android上寻找粒子生成器/发射器时,我偶然发现了这个好看的库:https://github.com/plattysoft/Leonids它似乎能提供我想要的东西。

但我在使用这个库时有一些未解决的问题:

  1. 我不能或不知道我是否可以将发射器放置在圆圈内
  2. 我相信,如果发射器所在的圆正在移动(滚动/动画),粒子很有可能不会随圆移动

正如我所说,我的iOS同事解决了这些问题。甚至是移动的部分:我们正在和经理交谈,经理告诉我们"如果转盘移动怎么办?"她立即在我们面前尝试了一下。我惊呆了。。。

她告诉我,我应该寻找一种方法来我的粒子包含在容器中(这很有意义^^),并且我的圆视图应该用层剪裁,这样粒子就不会离开圆,尤其是在整个东西都在移动的情况下。

这就是我之所以能做到这一点,要归功于前面提到的Android库:

  1. 我可以发射粒子,定义它们的形状、比例/大小、速度和发射角度
  2. 我可以将粒子发射器连接到视图。它将使用X&Y坐标来发射粒子,但像这里这样基于XML的可绘制圆的问题是它包含在基于正方形的视图(具有heightwidth)中,出于奇怪的原因,我的圆被绘制在所述基于正方形的视图之上

我希望我能找到另一个图书馆,但如果目前的图书馆有效,为什么不呢?只是在那里碰碰运气^^

谢谢你的帮助!

Leonids的库作者提出了一个建议,可能会帮助您达到预期效果:

(来源)

plattysoft评论于2016年9月19日

有趣的是,这目前还不支持,但你可以制作fork并调整库添加一个初始值设定项,该项获取半径并在周围生成粒子以一个随机的角度

第二部分是被中心吸引。这应该是一个修饰符或初始化器,其中加速度取决于角

技巧,不直接支持,但可行。

最新更新