Android毛玻璃背景效果简单实现代码
思路:
1.使用findViewByid获得需要设置毛玻璃的控件。
2.调用setBlurBackground(Bitmapbmp)方法(下面会给出),参数为Bitmap类型,给控件设置毛玻璃背景!
3.已完成,
方法:
/** *设置毛玻璃背景 *背景图片Bitmap */ privatevoidsetBlurBackground(Bitmapbmp) { finalBitmapblurBmp=BlurUtil.fastblur(ParentCircleInfoActivity.this,bmp,10);//0-25,表示模糊值 finalDrawabledrawable=ImageUtil.getDrawable(this,blurBmp);//将bitmap类型图片转为Drawable类型 mRLHead.post(newRunnable()//调用UI线程 { @Override publicvoidrun() { mRLHead.setBackgroundDrawable(drawable); } }); } bitmap转drawable: /** *bitmap->drawable *@paramcontext *@parambm *@return */ publicstaticDrawablegetDrawable(Contextcontext,Bitmapbm){ BitmapDrawablebd=newBitmapDrawable(context.getResources(),bm); returnbd; } 使用到的工具类: publicclassBlurUtil { @SuppressLint("NewApi") publicstaticBitmapfastblur(Contextcontext,BitmapsentBitmap,intradius) { if(VERSION.SDK_INT>16) { Bitmapbitmap=sentBitmap.copy(sentBitmap.getConfig(),true); finalRenderScriptrs=RenderScript.create(context); finalAllocationinput=Allocation.createFromBitmap(rs,sentBitmap,Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SCRIPT); finalAllocationoutput=Allocation.createTyped(rs,input.getType()); finalScriptIntrinsicBlurscript=ScriptIntrinsicBlur.create(rs,Element.U8_4(rs)); script.setRadius(radius);/*e.g.3.f*/ script.setInput(input); script.forEach(output); output.copyTo(bitmap); returnbitmap; } Bitmapbitmap=sentBitmap.copy(sentBitmap.getConfig(),true); if(radius<1) { return(null); } intw=bitmap.getWidth(); inth=bitmap.getHeight(); int[]pix=newint[w*h]; Log.e("pix",w+""+h+""+pix.length); bitmap.getPixels(pix,0,w,0,0,w,h); intwm=w-1; inthm=h-1; intwh=w*h; intdiv=radius+radius+1; intr[]=newint[wh]; intg[]=newint[wh]; intb[]=newint[wh]; intrsum,gsum,bsum,x,y,i,p,yp,yi,yw; intvmin[]=newint[Math.max(w,h)]; intdivsum=(div+1)>>1; divsum*=divsum; intdv[]=newint[256*divsum]; for(i=0;i<256*divsum;i++) { dv[i]=(i/divsum); } yw=yi=0; int[][]stack=newint[div][3]; intstackpointer; intstackstart; int[]sir; intrbs; intr1=radius+1; introutsum,goutsum,boutsum; intrinsum,ginsum,binsum; for(y=0;y>16; sir[1]=(p&0x00ff00)>>8; sir[2]=(p&0x0000ff); rbs=r1-Math.abs(i); rsum+=sir[0]*rbs; gsum+=sir[1]*rbs; bsum+=sir[2]*rbs; if(i>0) { rinsum+=sir[0]; ginsum+=sir[1]; binsum+=sir[2]; } else { routsum+=sir[0]; goutsum+=sir[1]; boutsum+=sir[2]; } } stackpointer=radius; for(x=0;x >16; sir[1]=(p&0x00ff00)>>8; sir[2]=(p&0x0000ff); rinsum+=sir[0]; ginsum+=sir[1]; binsum+=sir[2]; rsum+=rinsum; gsum+=ginsum; bsum+=binsum; stackpointer=(stackpointer+1)%div; sir=stack[(stackpointer)%div]; routsum+=sir[0]; goutsum+=sir[1]; boutsum+=sir[2]; rinsum-=sir[0]; ginsum-=sir[1]; binsum-=sir[2]; yi++; } yw+=w; } for(x=0;x 0) { rinsum+=sir[0]; ginsum+=sir[1]; binsum+=sir[2]; } else { routsum+=sir[0]; goutsum+=sir[1]; boutsum+=sir[2]; } if(i 总结
以上所述是小编给大家介绍的Android毛玻璃背景效果简单实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!