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