2013-01-23 93 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

不,圓弧的筆畫必須保持不變,這不適用於拉伸位圖。 –