在Android中,BlurMaskFilter
可以用來為視圖添加模糊效果。如果你想要處理透明度,你可以使用PorterDuffXfermode
來設置透明度。以下是一個簡單的示例,展示了如何使用BlurMaskFilter
和PorterDuffXfermode
來實現帶有透明度的模糊效果:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.view.View;
public class BlurView extends View {
private Paint paint;
private BlurMaskFilter blurMaskFilter;
private PorterDuffXfermode porterDuffXfermode;
public BlurView(Context context) {
super(context);
init();
}
private void init() {
paint = new Paint();
paint.setAntiAlias(true);
blurMaskFilter = new BlurMaskFilter(10, BlurMaskFilter.BlurStyle.NORMAL);
porterDuffXfermode = new PorterDuffXfermode(PorterDuffXfermode.Mode.SRC_IN);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 設置模糊效果
paint.setMaskFilter(blurMaskFilter);
// 設置透明度
paint.setXfermode(porterDuffXfermode);
// 繪制矩形
RectF rectF = new RectF(50, 50, 200, 200);
canvas.drawRect(rectF, paint);
}
}
在這個示例中,我們創建了一個名為BlurView
的自定義視圖。在init()
方法中,我們初始化了Paint
對象、BlurMaskFilter
對象和PorterDuffXfermode
對象。在onDraw()
方法中,我們首先設置模糊效果,然后設置透明度,最后繪制一個矩形。
你可以根據需要調整PorterDuffXfermode
的模式和透明度值。例如,你可以使用PorterDuffXfermode.Mode.SRC_OUT
來實現背景透明的效果。