Android的圆形渐变阿尔法面具 [英] Android Circular Gradient Alpha Mask
本文介绍了Android的圆形渐变阿尔法面具的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有一种方法来绘制在Android的位图的圆形渐变面具?试图产生类似于一个有雾的窗口的东西。单击该窗口和透明的圆圈显示了揭示最新的窗口后面。 prefferably用梯度所以圆的中心是完全透明的,并从中心更远的透明度较低。这可能吗?
我是新来的Android所以任何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屋!
查看全文