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

更多相关文章

  1. Android(安卓)Activity界面切换添加动画特效
  2. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  3. Android(安卓)的 supportdesign
  4. android 音效处理 (2)
  5. Android(安卓)Activity界面切换添加动画特效
  6. android 音效处理 (2)
  7. SlidingMenu和ActionBarSherlock结合做出出色的App布局,Facebook
  8. Android(安卓)实现View中添加子元素的动态效果
  9. Android(安卓)5.x特性概览二

随机推荐

  1. JavaScript制作网页数据图表/曲线图
  2. 关于webview中java调用js函数(解决loadUrl
  3. 已经安装了JDK,并且配置好了环境,在cmd中输
  4. Java:IntelliJ想法生成的代码错误地为所有
  5. 了解数组类型和使用java.util.Arrays类
  6. 如何在另一个类中使用静态类中的变量?
  7. JSP中--->中文乱码问题
  8. 在Java中修剪可能的字符串前缀
  9. java7 switch语句使用字符串
  10. 如何在Spring中读取具有相同键的多个属性