targetsdkversion android paint shadow

targetsdkversion - SetShadowLayer diferencias de la API de Android



sdk 28 android (1)

setShadowLayer() solo es compatible con texto cuando la aceleración de hardware está setShadowLayer() . La aceleración de hardware está targetSdk=14 forma predeterminada cuando targetSdk=14 o superior. Una solución sencilla es colocar su Vista en una capa de software: myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) .

Desarrollé un componente de vista personalizado para mi aplicación y me cuesta agregar una sombra a un círculo.

Aquí está el código de mi clase extendiendo la vista

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 el shadowLayer.

Aquí está la salida con

<uses-sdk android:targetSdkVersion="13"/>

Y aquí está la salida con

<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output.

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

Atentamente