android - Android 上是否有类似 iOS CAEmitterLayer 的圆形发射器的粒子发射器?

标签 android ios animation particle-system caemitterlayer

我的问题目前很难解决。

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

在开发结束时,我们应该交付两个功能相同且外观相似的应用程序(请放心,Android 不会强制执行 iOS 指南,反之亦然),以便体验相同身临其境。

要提供的最重要的功能之一是一个漂亮的白色空圆圈动画,它会在圆圈内发射类似雪花的粒子。圆圈可以通过滚动或简单的弹跳/滑动动画移动。

想象一下一个带有白色边框的圆圈,白色薄膜上有白色颗粒。所有这些粒子都被吸引到中心并且它们的速度基数在变化(但没有加速!)。假设最快的粒子在到达中心之前“死亡”。当然,可以通过生命周期和速度设置轻松设置的东西。

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

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

但是我在使用这个库时有一些 Unresolved 问题:

  1. 我不能或不知道我是否可以将发射器放在一个圆圈内;
  2. 我相信如果发射器卡在其上的圆圈正在移动(滚动/动画),则很可能粒子不会随圆圈一起移动;

正如我所说,我的 iOS 同事解决了这些问题。甚至移动部分:我们正在与我们的经理交谈,他告诉我们“如果圆圈移动怎么办?”她立即​​在我们面前尝试了。我被震撼了...

她告诉我,我应该寻找一种方法将我的粒子包含在一个容器中(有道理^^)并且我的圆形 View 应该用图层裁剪,这样粒子就不会离开圆圈,尤其是当整个事物都在移动时。

感谢上述 Android 库,这就是我取得的成就:

  1. 我可以发射粒子,定义它们的形状、比例/大小、速度以及发射角度;
  2. 我可以将粒子发射器连接到 View 。它将使用 View X&Y 坐标 来发射粒子,但基于XML 的圆形可绘制对象 会出现问题,例如here。是它包含在 square-based View 中(具有 heightwidth)并且出于奇怪的原因,我的圆圈在上面绘制所述基于平方的 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/

相关文章:

ios - 未找到 init 的实例方法(返回类型默认为 'id' )

ios - Storyboard - UITabBarController

Android, hive 动画("Animators may only be run on Looper threads")错误

javascript - 如何使用 jquery 缓慢地设置 div 的宽度动画

android - SQLite 数据库不插入值

Android 软件 NDK native c 代码在实际 Android 手机上的分析

ios - 在 UIActionSheet 中单击索引按钮时如何撰写邮件?

javascript - 如何让循环动画停止和恢复?

android - 在 FragmentPagerAdapter 上添加 PreferenceFragment

java - 如何使用 hashmap 通过数据库检索不同 editText 的值