Android的圆形渐变阿尔法面具 [英] Android Circular Gradient Alpha Mask

查看:181
本文介绍了Android的圆形渐变阿尔法面具的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有一种方法来绘制在Android的位图的圆形渐变面具?试图产生类似于一个有雾的窗口的东西。单击该窗口和透明的圆圈显示了揭示最新的窗口后面。 prefferably用梯度所以圆的中心是完全透明的,并从中心更远的透明度较低。这可能吗?

我是新来的Andr​​oid所以任何code样品将AP preciated。

感谢。

解决方案

 私人无效drawFoggyWindowWithTransparentCircle(画布油画,
        浮circleX,浮circleY,浮动半径){

    //获取雾窗口位图
    BitmapDrawable foggyWindow =
        (BitmapDrawable)getResources()getDrawable(R.drawable.foggy_window)。
    位图foggyWindowBmp = foggyWindow.getBitmap();

    //创建一个临时的位图
    位图tempBitmap = Bitmap.createBitmap(
            foggyWindowBmp.getWidth(),
            foggyWindowBmp.getHeight(),
            Bitmap.Config.ARGB_8888);
    帆布tempCanvas =新的Canvas(tempBitmap);

    //复制foggyWindowBmp到tempBitmap
    tempCanvas.drawBitmap(foggyWindowBmp,0,0,NULL);

    //创建一个径向渐变
    的RadialGradient梯度=新android.graphics.RadialGradient(
            circleX,circleY,
            半径,0xFF000000,00000000,
            android.graphics.Shader.TileMode.CLAMP);

    //绘制透明圈成tempBitmap
    涂料P =新的油漆();
    p.setShader(梯度);
    p.setColor(0xFF000000);
    p.setXfermode(新PorterDuffXfermode(Mode.DST_OUT));
    tempCanvas.drawCircle(circleX,circleY,半径,ρ);

    //绘制tempBitmap到屏幕(在什么已经存在)
    canvas.drawBitmap(tempBitmap,0,0,NULL);
}
 

Is there a way to draw a circular gradient mask on a bitmap in Android? Trying to produce something similar to a foggy window. Click the window and a transparent circle shows up revealing whats behind the window. Prefferably using a gradient so the center of the circle is completely transparent and the further out from the center the less transparent. Is this possible?

I'm new to Android so any code samples would be appreciated.

Thanks.

解决方案

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);
}

这篇关于Android的圆形渐变阿尔法面具的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆