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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。