package com.example.cunoraz; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; import android.renderscript.ScriptIntrinsicBlur; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.example.cunoraz.simple_blurred_image.R; public class ViewPagerAdapter extends PagerAdapter { // Declare Variables Context context; LayoutInflater inflater; int radiusArr[]; public ViewPagerAdapter(Context context) { this.context = context; radiusArr = new int[]{25, 23, 21, 19, 17};// decide blur amount } @Override public int getCount() { return 5; } @Override public boolean isViewFromObject(View view, Object object) { return view == ((RelativeLayout) object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageview; TextView textView; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View itemView = inflater.inflate(R.layout.viewpager_item, container, false); // Locate the ImageView in viewpager_item.xml imageview = (ImageView) itemView.findViewById(R.id.imageView); textView = (TextView) itemView.findViewById(R.id.textView); BitmapDrawable drawable = (BitmapDrawable) imageview.getDrawable(); Bitmap bitmap = drawable.getBitmap(); textView.setText("Radius: " + "" + radiusArr[position]); Bitmap blurred = blurRenderScript(bitmap, radiusArr[position]);//second parametre is radius imageview.setImageBitmap(blurred); //radius decide blur amount // Add viewpager_item.xml to ViewPager ((ViewPager) container).addView(itemView); return itemView; } @SuppressLint("NewApi") private Bitmap blurRenderScript(Bitmap smallBitmap, int radius) { try { smallBitmap = RGB565toARGB888(smallBitmap); } catch (Exception e) { e.printStackTrace(); } Bitmap bitmap = Bitmap.createBitmap( smallBitmap.getWidth(), smallBitmap.getHeight(), Bitmap.Config.ARGB_8888); RenderScript renderScript = RenderScript.create(context); Allocation blurInput = Allocation.createFromBitmap(renderScript, smallBitmap); Allocation blurOutput = Allocation.createFromBitmap(renderScript, bitmap); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript)); blur.setInput(blurInput); blur.setRadius(radius); // radius must be 0 < r <= 25 blur.forEach(blurOutput); blurOutput.copyTo(bitmap); renderScript.destroy(); return bitmap; } private Bitmap RGB565toARGB888(Bitmap img) throws Exception { int numPixels = img.getWidth() * img.getHeight(); int[] pixels = new int[numPixels]; //Get JPEG pixels. Each int is the color values for one pixel. img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); //Create a Bitmap of the appropriate format. Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888); //Set RGB pixels. result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); return result; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // Remove viewpager_item.xml from ViewPager ((ViewPager) container).removeView((RelativeLayout) object); } }