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,
浙公网安备 33010602011771号