Blurry的库的地址:https://github.com/wasabeef/Blurry
首先,获取需要被模糊的图片,可以为view,bitmap等。
然后,使用框架将模糊后的背景进行填充
两种方式
设置方式一:将view设置为模糊背景
Blurry.with(mContext).radius(20).capture(decorView).into(mBackground); //mBackground 为ImageView
设置方式二:将bitmap设置为模糊背景
Blurry.with(mContext).radius(20).from(bitmap).into(mBgIv);
//在fragment状态下,获取背景view
View decorView = getActivity().getWindow().getDecorView();
//如果无须剪裁获取的view,则直接将获取的view进行模糊,然后设置到背景布局上
/****************************** 重点 ***********************/
//设置方式一:将viw设置为模糊背景
Blurry.with(mContext).radius(20).capture(decorView).into(mBackground); //mBackground 为ImageView
//则完成背景模糊的设置
//如果需要将获取的背景view继续剪裁,则需要将view设置为可缓存的。
//这样避免一会儿创建获取bitmap的时候为null。创建成bitmap是为了可以创建一个手动设置剪裁后的view
decorView.setDrawingCacheEnabled(true);
//设置不会自动伸缩
decorView.buildDrawingCache();
//创建一个将viw剪裁为从底部到上部高为400,宽为view的宽度的剪裁后的bitmap
Bitmap bitmap = Bitmap.createBitmap(decorView.getDrawingCache(), 0, decorView.getHeight() - 400, decorView.getWidth(), 400);
//销毁缓存,此时要结合自身业务,如果每次都是相同的背景,则无须进行销毁,但如果每次模糊的背景都是变化的,则需要进行销毁,并每次创建,如果不销毁,即使从上面走下来,还是会调用缓存的view.
decorView.destroyDrawingCache();
/****************************** 重点 ***********************/
//设置方式二:将bitmap设置为模糊背景
Blurry.with(mContext).radius(20).from(bitmap).into(mBgIv);