Android水面落叶动态壁纸源码及分析 附下载地址
16lz
2022-06-29
Android自带的水面落叶动态壁纸效果,尝试使用plasma等jni来实现,最终效果仍然不如renderScript实现的好,因为renderScript相关学习资料比较少,不再重头编写rs脚本来实现波纹效果,而是提取源码中的动态壁纸脚本来使用。
水面波纹动态壁纸在安卓源码中的位置是:
\android\packages\wallpapers\Basic\src\com\android\wallpaper\fall
要提取的主要对象就是这个文件夹下的fall.rs文件
将源码导入,删除galaxy等不需要的壁纸效果后,发现编译只报一个错误,MathUtil找不到,查看其导入声明:
因为是静态导入,可以考虑直接把这个方法移植过来,该引用的类是个隐藏类,源码文件在:
\android\frameworks\base\core\java\android\util\MathUtils.java
查看下方法定义:
public static float random(float howsmall, float howbig) { if (howsmall >= howbig) return howsmall; return sRandom.nextFloat() * (howbig - howsmall) + howsmall;}
其中sRandom=new Random();
于是在FallRs添加一下方法替代之:
public static float random(float howsmall, float howbig) { if (howsmall >= howbig) return howsmall; return new Random().nextFloat() * (howbig - howsmall) + howsmall;}
由于一些机型已经安装了水面落叶的动态壁纸,再次安装同样的包名会导致签名不一致导致无法安装,所以修改了下包名wallpaper改为wallpapers,至此水面落叶壁纸就可以运行了。
程序使用renderScript作为渲染工具,关于renderScript这里有几篇文章进行简单的介绍。
在附上的源码内部添加了一些注释,renderScript入门后再看这些应该问题不大。
然后修改一下背景图片,删除叶子的下落效果,再修改下水面波纹的触发条件等,都可以简单的完成了
下载地址:git@github.com:gediseer/wallpapers.git
更多相关文章
- Android(安卓)Activity界面切换添加动画特效
- TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
- Android(安卓)的 supportdesign
- android 音效处理 (2)
- Android(安卓)Activity界面切换添加动画特效
- android 音效处理 (2)
- SlidingMenu和ActionBarSherlock结合做出出色的App布局,Facebook
- Android(安卓)实现View中添加子元素的动态效果
- Android(安卓)5.x特性概览二