直接上代碼:
public class BlurUtil {
/**
* 模糊圖片
* @param context
* @param bitmap
* @param radius 模糊半徑
* @param simple 縮小比例
* @return
*/
public static Bitmap blurImage(Context context, Bitmap bitmap, int radius, int simple) {
if (simple > 1) {
bitmap = compressBitmap(bitmap, simple);
}
return blurByRenderScript(context, bitmap, radius);
}
/**
* 模糊
* @param context
* @param bitmap
* @param radius
* @return
*/
public static Bitmap blurByRenderScript(Context context, Bitmap bitmap, int radius) {
RenderScript rs = RenderScript.create(context);
Allocation allocation = Allocation.createFromBitmap(rs, bitmap);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, allocation.getElement());
blur.setInput(allocation);
blur.setRadius(radius);
blur.forEach(allocation);
allocation.copyTo(bitmap);
rs.destroy();
return bitmap;
}
/**
* 截屏
* @param activity
* @return
*/
public static Bitmap capture(Activity activity) {
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
return view.getDrawingCache();
}
/**
* 縮放
* @param bitmap
* @param simple
* @return
*/
private static Bitmap compressBitmap(Bitmap bitmap, int simple) {
if (simple > 1) {
bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() / simple,
bitmap.getHeight() / simple, true);
}
return bitmap;
}
這麼用->
Bitmap bitmap = BlurUtil.capture(activity);
if (bitmap != null) {
view.setBackground(new BitmapDrawable(activity.getResources(),
BlurUtil.blurImage(activity, bitmap, 5, 2)));
}
例子裏的bitmap是使用的屏幕截圖