setShadowLayer Android API различия
Я разрабатываю пользовательские компоненты для моего приложения и я борюсь с добавлением тени к кругу.
вот код моего класса, расширяющего представление
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);
}
}
однако я заметил, что в зависимости от API существует большое влияние на shadowLayer.
вот выход с
<uses-sdk android:targetSdkVersion="13"/>
и вот результат с
<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output.
любая идея, как преодолеть это нежелательное поведение ?
С наилучшими пожеланиями
1 ответов
setShadowLayer()
поддерживается только в тексте, когда аппаратное ускорение включено. Аппаратное ускорение включено по умолчанию, когда targetSdk=14
или выше. Простой обходной путь-поместить ваше представление в программный слой:myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
.