Hello Every One, to make Image Blur in Android I Used a Simple Approach By Using Glide
https://github.com/bumptech/glide
Follow Following Steps to Achieve that
Step 1:
Create a XML File
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_parent_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<ImageView android:id="@+id/user_image_transparent" android:layout_width="match_parent" android:layout_height="match_parent" android:alpha="1" android:adjustViewBounds="true" android:scaleType="centerCrop" android:background="@drawable/splash_bg"/> </LinearLayout>Step 2:
In your Main Activity use this Method To make Image Blur
DrawableRequestBuilder drawableRequestBuilder = Glide.with("Pass your App Context Here") .load(image_url) .bitmapTransform(new BlurTransformation(mContext)) .animate(android.R.anim.fade_in)//If You Want To Animate .placeholder(R.drawable.ic_loading) .error(R.drawable.ic_no_image); drawableRequestBuilder.into(imageView);
Step 3:Create Class BlurTransformation:import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; import android.renderscript.RSRuntimeException; import com.bumptech.glide.Glide; import com.bumptech.glide.load.Transformation; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapResource; public class BlurTransformation implements Transformation<Bitmap> { private static int MAX_RADIUS = 25; private static int DEFAULT_DOWN_SAMPLING = 1; private Context mContext; private BitmapPool mBitmapPool; private int mRadius; private int mSampling; public BlurTransformation(Context context) { this(context, Glide.get(context).getBitmapPool(), MAX_RADIUS, DEFAULT_DOWN_SAMPLING); } public BlurTransformation(Context context, BitmapPool pool) { this(context, pool, MAX_RADIUS, DEFAULT_DOWN_SAMPLING); } public BlurTransformation(Context context, BitmapPool pool, int radius) { this(context, pool, radius, DEFAULT_DOWN_SAMPLING); } public BlurTransformation(Context context, int radius) { this(context, Glide.get(context).getBitmapPool(), radius, DEFAULT_DOWN_SAMPLING); } public BlurTransformation(Context context, int radius, int sampling) { this(context, Glide.get(context).getBitmapPool(), radius, sampling); } public BlurTransformation(Context context, BitmapPool pool, int radius, int sampling) { mContext = context.getApplicationContext(); mBitmapPool = pool; mRadius = radius; mSampling = sampling; } @Override public Resource<Bitmap> transform(Resource<Bitmap> resource, int outWidth, int outHeight) { Bitmap source = resource.get(); int width = source.getWidth(); int height = source.getHeight(); int scaledWidth = width / mSampling; int scaledHeight = height / mSampling; Bitmap bitmap = mBitmapPool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); if (bitmap == null) { bitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) mSampling, 1 / (float) mSampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(source, 0, 0, paint); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { try { bitmap = RSBlur.blur(mContext, bitmap, mRadius); } catch (RSRuntimeException e) { bitmap = FastBlur.blur(bitmap, mRadius, true); } } else { bitmap = FastBlur.blur(bitmap, mRadius, true); } return BitmapResource.obtain(bitmap, mBitmapPool); } @Override public String getId() { return "BlurTransformation(radius=" + mRadius + ", sampling=" + mSampling + ")"; } }
Paste that Code in it
Do not Forget To Add Internet Permission if you are Using and Image URL
Work for Both Local and Remote Image
No comments:
Post a Comment