Android 中 RenderScript 使用心得

 

 Android 中 高斯模糊及毛玻璃效果,实现比较的高效是 RenderScript 方式, 在使用过程中遇到一些问题。

基本配置过程:

renderscriptTargetApi 19
renderscriptSupportModeEnabled true

添加方法:
import android.content.Context;
import android.graphics.Bitmap;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicBlur;

public class BlurUtils {
private RenderScript renderScript;
public BlurUtils(@NonNull Context context) {
this.renderScript = RenderScript.create(context);
}

public Bitmap gaussianBlur(@IntRange(from = 1, to = 25) int radius, Bitmap original) {
Allocation input = Allocation.createFromBitmap(renderScript, original);
Allocation output = Allocation.createTyped(renderScript, input.getType());
ScriptIntrinsicBlur scriptIntrinsicBlur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
scriptIntrinsicBlur.setRadius(radius);
scriptIntrinsicBlur.setInput(input);
scriptIntrinsicBlur.forEach(output);
output.copyTo(original);
return original;
}
}

注意: 不需要主动添加renderscript-v8 库, 加上那两句话它会主动添加。
但运行时,报错找不到librsjni.so 库,后来从另一个项目中把 librsjni.so, libRSSupport.so拷贝过来,正常运行。
网上说原因是 Build-tools 版本问题,我用的25,
posted on 2017-03-01 15:56  gone_1  阅读(423)  评论(0)    收藏  举报