Android水面落叶动态壁纸源码及分析 附下载地址
16lz
2021-01-23
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入门后再看这些应该问题不大。
然后修改一下背景图片,删除叶子的下落效果,再修改下水面波纹的触发条件等,都可以简单的完成了
下载地址:[email protected]:gediseer/wallpapers.git
更多相关文章
- Android 水波纹点击效果(Ripple Effect)
- 关于listview的item中如果有textview,listview点击item没有效果的
- Jquery 仿 android Toast效果
- Android通过Alpha实现渐变效果的几个方法
- 【Android】实现全屏、无标题栏效果
- Android的Activity跳转动画各种效果整理
- 解决TextView设置跑马灯但却没有效果
- [Android]文本框实现搜索和清空效果