I develop a custom view component for my application and I am struggling with adding a shadow to a circle.
Here is the code of my class extending 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); } }
However, I noticed that depending on the API, There is a big impact on the shadowLayer.
Here is the output with
<uses-sdk android:targetSdkVersion="13"/>
And here is the output with
<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output.
Any idea how to overcome this unwanted behaviour?
setShadowLayer()
is only supported on text when hardware acceleration is on. Hardware acceleration is on by default when targetSdk=14
or higher. An easy workaround is to put your View in a software layer: myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With