安卓圆形渐变透明蒙版

9
有没有一种方法在Android上对位图绘制圆形渐变遮罩?试图制作类似于模糊窗口的效果。单击窗口,透明圆圈出现,显示窗口后面的内容。最好使用渐变,使圆的中心完全透明,离中心越远,透明度越低。这可能吗?
我是Android新手,希望能提供代码示例。
谢谢。
1个回答

20
private void drawFoggyWindowWithTransparentCircle(Canvas canvas,
        float circleX, float circleY, float radius) {

    // Get the "foggy window" bitmap
    BitmapDrawable foggyWindow = 
        (BitmapDrawable) getResources().getDrawable(R.drawable.foggy_window);
    Bitmap foggyWindowBmp = foggyWindow.getBitmap();

    // Create a temporary bitmap
    Bitmap tempBitmap = Bitmap.createBitmap(
            foggyWindowBmp.getWidth(),
            foggyWindowBmp.getHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas tempCanvas = new Canvas(tempBitmap);

    // Copy foggyWindowBmp into tempBitmap
    tempCanvas.drawBitmap(foggyWindowBmp, 0, 0, null);

    // Create a radial gradient
    RadialGradient gradient = new android.graphics.RadialGradient(
            circleX, circleY,
            radius, 0xFF000000, 0x00000000,
            android.graphics.Shader.TileMode.CLAMP);

    // Draw transparent circle into tempBitmap
    Paint p = new Paint();
    p.setShader(gradient);
    p.setColor(0xFF000000);
    p.setXfermode(new PorterDuffXfermode(Mode.DST_OUT));
    tempCanvas.drawCircle(circleX, circleY, radius, p);

    // Draw tempBitmap onto the screen (over what's already there)
    canvas.drawBitmap(tempBitmap, 0, 0, null);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接