Android中的Blur效果
2017-02-24 本文已影响1153人
卖梦想的男孩
Android的Blur效果一直比较蛋疼,早期主要是通过Java算法来实现,后来有人又实现了C版本,算是提高了一部分效率。
Renderscript是Android平台上进行高性能计算的框架,是从Android3.0开始引入的,但是更新后对于模糊计算的类支持4.2(api 17+),如果要在低版本上使用,可以使用支持库v8.renderscript,支持Android2.2(API level 8+)。
android{
defaultConfig {
renderscriptTargetApi 23 //设置目标的版本
renderscriptSupportModeEnabled true //启用兼容模式
}
}
模糊图片示例:
public Bitmap blur(Context context, Bitmap srcBitmap, int radius) {
Bitmap distBitmap= sentBitmap.copy(srcBitmap.getConfig(), true);
final RenderScript rs = RenderScript.create(context);
final Allocation input = Allocation.createFromBitmap(rs, srcBitmap, Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(radius);
script.setInput(input);
script.forEach(output);
output.copyTo(distBitmap);
//do some release
srcBitmap.recycle();
input.destroy();
output.destroy();
script.destroy();
rs.destroy();
return distBitmap;
}
当然也有好多轮子可以带你开车,自行到站上车。
Blurry
500px-android-blur