Android实现图片转高斯模糊以及高斯模糊布局
第一个为大家介绍图片如何转高斯模拟:
1.方法的实现:
publicstaticvoidupdateBgToBlur(Activitya,BitmapbmpToBlur,Viewview,intresId){ BitmapFactory.Optionsopt=newBitmapFactory.Options(); opt.inJustDecodeBounds=true; opt.inSampleSize=8; opt.inJustDecodeBounds=false; Bitmapbmp=BitmapFactory.decodeResource(a.getResources(),resId,opt); if(Build.VERSION.SDK_INT>Build.VERSION_CODES.JELLY_BEAN){ view.setBackground(null); }else{ view.setBackgroundDrawable(null); } if(bmpToBlur!=null&&!bmpToBlur.isRecycled()){ bmpToBlur.recycle(); } bmpToBlur=blurBitmap(a,bmp); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN){ view.setBackground(newBitmapDrawable(a.getResources(),bmpToBlur)); }else{ view.setBackgroundDrawable(newBitmapDrawable(a.getResources(),bmpToBlur)); } } publicstaticBitmapblurBitmap(Contextc,Bitmapbitmap){ //Let'screateanemptybitmapwiththesamesizeofthebitmapwewanttoblur BitmapoutBitmap=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Bitmap.Config.ARGB_4444); //InstantiateanewRenderscript RenderScriptrs=RenderScript.create(c.getApplicationContext()); //CreateanIntrinsicBlurScriptusingtheRenderscript ScriptIntrinsicBlurblurScript=ScriptIntrinsicBlur.create(rs,Element.U8_4(rs)); //CreatetheAllocations(in/out)withtheRenderscriptandthein/outbitmaps AllocationallIn=Allocation.createFromBitmap(rs,bitmap); AllocationallOut=Allocation.createFromBitmap(rs,outBitmap); //Settheradiusoftheblur blurScript.setRadius(25.f); //PerformtheRenderscript blurScript.setInput(allIn); blurScript.forEach(allOut); //CopythefinalbitmapcreatedbytheoutAllocationtotheoutBitmap allOut.copyTo(outBitmap); //recycletheoriginalbitmap bitmap.recycle(); //Afterfinishingeverything,wedestroytheRenderscript. rs.destroy(); returnoutBitmap; }
2调用:
Bitmapbitmap=null; if(Build.VERSION.SDK_INT>Build.VERSION_CODES.KITKAT){ ImageUtil.updateBgToBlur(getActivity(),bitmap,slidingUpPanelLayout,R.drawable.bg_tageditor); }else{ slidingUpPanelLayout.setBackgroundResource(R.drawable.bg_tageditor); }
二、高斯模糊布局:
项目需求:现有一个紫色背景图片,相册图片覆盖在背景图片,一个Framlayout覆盖在这个含有相册图片的背景图中,实现模糊盖在上面的高斯模拟效果:
1引用BlurView:
compile'com.eightbitlab:supportrenderscriptblur:1.0.0' compile'com.eightbitlab:blurview:1.3.3' defaultConfig{ renderscriptTargetApi25//mustmatchtargetsdkandbuildtools,23+ renderscriptSupportModeEnabledtrue }
2 .调用:
finalfloatradius=20; finalViewdecorView=getActivity().getWindow().getDecorView(); //Activity'srootView.CanalsoberootViewofyourlayout(preferably) finalViewGrouprootView=(ViewGroup)decorView.findViewById(android.R.id.content); //setbackground,ifyourrootlayoutdoesn'thaveone finalDrawablewindowBackground=decorView.getBackground(); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR1){ mBlurView.setupWith(rootView) .windowBackground(windowBackground) .blurAlgorithm(newRenderScriptBlur(getActivity())) .blurRadius(radius); }else{ mBlurView.setupWith(rootView) .windowBackground(windowBackground) .blurAlgorithm(newSupportRenderScriptBlur(getActivity())) .blurRadius(radius); }
3xml
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。