package com.example.asamles.app.dialog; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import com.example.asamles.app.R; import com.example.asamles.app.imageedit.blur.BlurTask; public class BlurBackground implements BlurTask.BlurTaskListener { private ImageView background; private Activity activity; private Bitmap map; public BlurBackground(Activity activity, ImageView background) { this.activity = activity; this.background = background; } public void setBlurredBackground() { Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); params.setMargins(0, statusBarHeight, 0, 0); background.setLayoutParams(params); map = takeScreenShot(activity); blur(map, background); } private static Bitmap takeScreenShot(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay().getHeight(); Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.setDrawingCacheEnabled(false); return b; } private void blur(Bitmap bkg, ImageView view) { BlurTask task = new BlurTask(bkg, view, this); task.execute(); } @Override public void onBlurTaskComplete(Bitmap result) { if (result != null) { background.setImageDrawable(new BitmapDrawable(activity.getResources(), Bitmap.createScaledBitmap(result, map.getWidth(), map.getHeight(), true))); } else { ADialogs alertDialog = new ADialogs(activity); alertDialog.alert(true, activity.getString(R.string.error), activity.getString(R.string.blur_background_error), activity.getString(R.string.ok), null); } } }