diferencias de la API setShadowLayer de Android

Desarrollo un componente de vista personalizado para mi aplicación y estoy luchando para agregar una sombra a un círculo.

Aquí está el código de mi clase que se extiende View

public class ChartView extends View { public ChartView(Context context, AttributeSet attributeSet){ super(context, attributeSet); init(); } Paint paint; public void init(){ paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.FILL); paint.setShadowLayer(30, 0, 0, Color.RED); } @Override protected void onDraw(Canvas canvas) { canvas.drawCircle(getWidth()/2, getHeight()/2,50, paint); } } 

Sin embargo, noté que dependiendo de la API, hay un gran impacto en shadowLayer.

Aquí está la salida con

  

enter image description here

Y aquí está la salida con

  //Higher target API yields the same output. 

enter image description here

¿Alguna idea de cómo superar este comportamiento no deseado?

Atentamente

setShadowLayer() solo se admite en texto cuando la aceleración de hardware está setShadowLayer() . La aceleración de hardware está targetSdk=14 por defecto cuando targetSdk=14 o más. Una solución fácil es colocar su Vista en una capa de software: myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) .