package com.example.asamles.app.imageedit.blur; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.os.AsyncTask; import android.widget.ImageView; public class BlurTask extends AsyncTask<Void, Bitmap, Bitmap> { public interface BlurTaskListener { public void onBlurTaskComplete(Bitmap result); } private BlurTaskListener callback; private Bitmap bkg; private ImageView view; public BlurTask(Bitmap bkg, ImageView view, BlurTaskListener callback) { this.bkg = bkg; this.view = view; this.callback = callback; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Bitmap doInBackground(Void... params) { float scaleFactor = 3; float radius = 3; Bitmap overlay = Bitmap.createBitmap((int) (bkg.getWidth() / scaleFactor), (int) (bkg.getHeight() / scaleFactor), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.translate(-view.getLeft() / scaleFactor, -view.getTop() / scaleFactor); canvas.scale(1 / scaleFactor, 1 / scaleFactor); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(bkg, 0, 0, paint); overlay = FastBlur.doBlur(overlay, (int) radius, true); return overlay; } @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); callback.onBlurTaskComplete(result); } }