9
有没有办法在Android中的位图上绘制圆形渐变蒙版?试图产生类似于模糊窗口的东西。点击窗口,透明的圆圈显示窗口背后的内容。预先使用渐变使圆的中心是完全透明的,并且离中心越远越不透明。这可能吗?Android圆形渐变Alpha蒙版
我是Android新手,所以任何代码示例将不胜感激。
谢谢。
有没有办法在Android中的位图上绘制圆形渐变蒙版?试图产生类似于模糊窗口的东西。点击窗口,透明的圆圈显示窗口背后的内容。预先使用渐变使圆的中心是完全透明的,并且离中心越远越不透明。这可能吗?Android圆形渐变Alpha蒙版
我是Android新手,所以任何代码示例将不胜感激。
谢谢。
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);
}
谢谢!很有帮助! – 2010-11-12 23:22:06
感谢这个答案,它帮了我很多。 – 2012-08-02 17:22:36