Android循环梯度Alpha面具

有没有办法在 Android中的位图上绘制圆形梯度蒙版?试图生产类似于雾窗的东西.点击窗口,透明的圆圈显示窗口后面的内容.优雅地使用渐变,所以圆的中心是完全透明的,从中心越远透明度越低.这可能吗?

我是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,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,p);

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...