ステップ 1. ぼかしたいビットマップの背景画像の部分をカットします。
ステップ 2. ビットマップのその部分をぼかします。
ステップ 3. 背景としてビットマップを設定します。
Java メソッド
private void applyBlur(final View image, final View layout) {
image.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
Bitmap overlay = Bitmap.createBitmap((int) (layout.getMeasuredWidth()),
(int) (layout.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-layout.getLeft(), -layout.getTop());
canvas.drawBitmap(bmp, 0, 0, null);
RenderScript rs = RenderScript.create(getActivity());
Allocation overlayAlloc = Allocation.createFromBitmap(
rs, overlay);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(
rs, overlayAlloc.getElement());
blur.setInput(overlayAlloc);
blur.setRadius(20);
blur.forEach(overlayAlloc);
overlayAlloc.copyTo(overlay);
layout.setBackground(new BitmapDrawable(
getResources(), overlay));
rs.destroy();
return true;
}
});
}
...
この関数を呼び出します:
呼び出し方法
applyBlur(detail_main_image, titleLayout);
...
//ここで、detail_main_image はぼかし部分を表示する必要がある画像です。//titleLayout は、背景のぼかしを設定する必要があるビューです。