动态壁纸水波纹效果

Gat*_*per 9 android effects wallpaper live

我正在制作一个动态壁纸,它在触摸屏幕时融入了一些水波纹效果,但我有点卡住了.

创建多个图像并循环创建一个波纹动画会不会更好?或者在将它放在画布上之前将位图扭曲一下会更好吗?

是一个通过OpenGL完成的非常好的连锁效果的视频.

我对OpenGL还没有任何经验,并且想知道是否仍然可以在动态壁纸上创建2D水效果?

est*_*why 18

我想在Android中实现逼真的连锁效果,所以将分享我的经验:

作为参考实现,我采用了谢尔盖的Chiluyonok JavaScript端口Neil Wallis Java算法.这是一个可以试验原始JS代码的游乐场:http://jsfiddle.net/esteewhy/5Ht3b/6/

起初,我已经将JS代码移植到Java只是为了意识到我的华为U8100硬件无法超过1 fps.(在网上有几个类似的尝试,唯一的结论是:它们的速度非常慢).

顺便说一句,这个SO答案非常有用,可以基本了解如何在Android中编写交互式图形代码:https://stackoverflow.com/a/4946893/35438.我从那里借了fps counter.

然后我决定尝试Android NDK重新实现纯C中的原始算法(我10年来第一次遇到它!).尽管NDK的文档有点令人困惑(特别是在需求和先决条件方面),但这一切都像魅力一样,所以我能够达到高达30 fps - 它可能不会太令人印象深刻,但仍然是对Java代码的彻底改进.

最后,我已将我的所有工作都放在网上:https://github.com/esteewhy/whater,所以请随意使用它.它包含:

  1. 上面提到的互动弹跳球代码(仅供参考).
  2. 水涟漪Java端口(慢得像地狱!)
  3. 水涟漪C实现(需要NDK编译和JDK创建.h文件).

(该项目不是"干净",即:所有二进制文件都在那里,因此即使没有NDK也可以"按原样"运行它.)

在此输入图像描述


Ste*_* C. 6

您可以在此处找到触摸涟漪效果的示例:

https://github.com/MasDennis/RajawaliExamples

它利用了rajawali OpenGL ES框架/库.您可以从市场下载rajawali示例应用程序,看看它的外观.浏览"src"文件夹,您将看到TouchRippleEffect活动和渲染器.希望有所帮助.