android Paint.setShadowLayer()vs Canvas.drawbitmap()的问题

我使用以下代码在自定义视图的onDraw中绘制位图

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); p.setShadowLayer(3,3,3,0xff000000); Bitmap bmp = BitmapFactory.decodeResource(some drawable jpg); canvas.drawBitmap(bmp,null,new Rect(blah blah),p); 

阴影看起来很有趣。 我是什么意思? 我的意思是,如果我调用canvas.drawRect(),我会得到一个不同的阴影。 它看起来有点像Android阴影代码是把位图当作alpha通道来处理的。

尝试添加p.setColor(0xff000000); 和p.setStyle(Paint.Style.FILL); 但没有区别。

我想我可以用阴影绘制Rect,然后用阴影closuresDrawBitmap,但这看起来很愚蠢,因为它会渲染像素两次。

Solutions Collecting From Web of "android Paint.setShadowLayer()vs Canvas.drawbitmap()的问题"

基本上阴影层不适用于除文本以外的任何内容。 真是愚蠢 检查Android硬件加速支持的操作图表 。

在2010年,当硬件加速视图树不存在的时候,这个问题被提出来了。根据我读过的东西,即使这样,阴影层也只适用于简单的形状(如果有的话),而其他人却得到了奇怪的结果什么都不是文字。 你可能不走运。

最后,有很多方法可以伪造阴影图层。 您可以将视图包装在另一个视图中并在其下面绘制。 您可以编写一个视图,将自己的阴影绘制为放射状的渐变等等。但是,您可能只是想制作一个看起来像阴影并使用它的9patch。

也许你应该为不同的目的,如文本,位图等不同的画图对象,所以一个人的设置不会影响其他人。