最近看到bilibili的番剧详情页面下的背景图有高斯模糊的效果,很好看,于是也将自己个人项目的某个背景图调成模糊的效果,用的是500px的500px-android-blur
地址:https://github.com/500px/500px-android-blur

在集成的时候,android.support.v8库找不到。这个renderscript-v8.jar包需要从sdk的目录下手动拷贝到工程的libs下面,因为用androidstudio2.1.1版本,sdk编译工具是23.0.3的版本

然后将jar包导入到androidstudio工程libs下面,出现了下面的错误:
Caused by: android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/com.papi.player-2/lib/arm/librsjni.so" Support lib API: 2301
at android.support.v8.renderscript.RenderScript.internalCreate(RenderScript.java:1358)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1529)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1479)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1455)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1442)
at com.fivehundredpx.android.blur.BlurringView.initializeRenderScript(BlurringView.java:98)
at com.fivehundredpx.android.blur.BlurringView.<init>(BlurringView.java:37)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:825)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:828)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:523)
at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
at android.view.LayoutInflater.inflate(LayoutInflater.java:368)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:255)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
网上搜答案,说是兼容问题,然后把so库也靠近了libs下面,总应该匹配了吧

但是上面的异常还是发生了,想了想,最关键的一句提示Support lib API: 2301,我的手机是5.0.1的系统,应该是用了高版本的api,归根结底是库版本不该用这么高的,然后找到eclipse的sdk路径

然后把这个4.4版本下的jar文件替换掉之前的23版本,然后运行,正常!!!好开心~~~
常用模糊方式:
RenderScript
调用 Android 自带的 RenderScript 类进行图片模糊
其模糊速度一般,与直接在Java层模糊区别不大
我这边调试只能在 4.4 以上运行,理论上是 Android 17 以上都行
Fast Blur
Java层进行模糊
Fast Blur 是国外一位开发者发明的模糊方法
Fast Blur 原名是 堆栈模糊
JniArray
其模糊规则是 堆栈模糊 的 C 语言实现
在 JNI 层进行模糊,然后传回模糊后的数据
在 Java 层对图片类解析得到 像素点 数组传入到 JNI 层
JNI 层对像素点集合进行模糊,模糊后传回
JniBitMap
其模糊规则是 堆栈模糊 的 C 语言实现
在 JNI 层进行模糊,然后传回模糊后的数据
在 JNI 层直接对图片模糊,模糊后传回
网友评论