1

円弧を描くと、影のレイヤーが描かれないという問題があります。ここに私のPaintオブジェクトがあります:

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 だけを使用することはできません。

4

2 に答える 2

2

Paint.setShadowLayerハードウェアアクセラレーションが有効になっている場合、テキストでのみ機能します。これを回避するには、この特定のビューのハードウェアアクセラレーションを無効にするだけです。

于 2013-01-23T02:09:36.307 に答える
0

ビューハードウェアを高速化したままにしたい場合は、シャドウレイヤーを使用して円弧を画面外のビットマップに描画し、そのビットマップをキャンバスに描画できます。

于 2013-03-19T04:59:43.437 に答える