2010-11-11 103 views
9

有沒有辦法在Android中的位圖上繪製圓形漸變蒙版?試圖產生類似於模糊窗口的東西。點擊窗口,透明的圓圈顯示窗口背後的內容。預先使用漸變使圓的中心是完全透明的,並且離中心越遠越不透明。這可能嗎?Android圓形漸變Alpha蒙版

我是Android新手,所以任何代碼示例將不勝感激。

謝謝。

回答

19
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); 
} 
+1

謝謝!很有幫助! – 2010-11-12 23:22:06

+0

感謝這個答案,它幫了我很多。 – 2012-08-02 17:22:36