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

更多相关文章

  1. Android 水波纹点击效果(Ripple Effect)
  2. 关于listview的item中如果有textview,listview点击item没有效果的
  3. Jquery 仿 android Toast效果
  4. Android通过Alpha实现渐变效果的几个方法
  5. 【Android】实现全屏、无标题栏效果
  6. Android的Activity跳转动画各种效果整理
  7. 解决TextView设置跑马灯但却没有效果
  8. [Android]文本框实现搜索和清空效果

随机推荐

  1. Android入门教程 AsyncTask的使用及execu
  2. 如何编译MTK android模拟器
  3. Android 增加鼠标支持
  4. Ubuntu 下 Android源代码下载指南
  5. Android的TextView中文字添加删除线,下划
  6. [置顶] 我的Android进阶之旅------>Andro
  7. 详解谷歌官方教程 Android插件ADT 9.0.0
  8. 项目中遇到的问题留下笔记
  9. android 软件更新代码
  10. 如何判断Android系统的版本