2013-01-23 92 views
1

我有一个问题,当我画一个弧时阴影层没有被绘制。这里是我的Paint对象:带有阴影的Android drawArc

circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
circlePaint.setStrokeWidth(strokeWidth); 
circlePaint.setColor(Color.WHITE); 
circlePaint.setStyle(Paint.Style.STROKE); 
circlePaint.setShadowLayer(shadowRadius, 0, shadowOffset, 0xFF000000); 

onDraw()

canvas.drawArc(rect, 0, 180, false, circlePaint); 

我有一种感觉shadowLayer只是被忽略。有没有其他方法可以在椭圆形上绘制阴影?问题是,椭圆形的get调整大小(如高度变大),所以我不能只使用ninepatch。

回答

2

Paint.setShadowLayer如果启用了硬件加速,则只能使用文本。要解决该问题,您可以禁用此特定视图的硬件加速。

+0

哦,是的,这是问题所在。谢谢! –

0

如果您想让视图硬件加速,可以将带有阴影图层的圆弧绘制到离屏位图中,然后将该位图绘制到画布上。

+0

这可能太慢了 - 圆弧将被拉伸,所以它必须经常更新 –

+0

您可以将其绘制一次到屏幕外的位图并缓存它。然后在每个onDraw调用中只绘制位图而不是弧。 – Nadewad

+0

不,圆弧的笔画必须保持不变,这不适用于拉伸位图。 –