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