Android BlurMaskFilter has no effect in canvas.drawOval while text is blurred
Solution 1:
Looks like a bug to me. I reported it to the Android team; we'll see what they say.
It renders correctly if you set android:hardwareAccelerated="false"
on your Activity in AndroidManifest.xml
.
Here is the official word from the Android graphics team: "BlurMaskFilter is not supported with hardware acceleration." (As of July 10, 2012)
Solution 2:
If you can not disable hardware acceleration in your activity (for example it uses TextureView which require hardware acceleration) you can just call setLayerType with first parameter LAYER_TYPE_SOFTWARE and the second parameter null for your view.
Like this
public class BlurTestView extends View {
public BlurTestView(Context context) {
this(context, null, 0);
}
public BlurTestView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public BlurTestView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// Disable hardware acceleration for this view
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
// Perform other initialisation
}
// Other methods and so on...
}
More info about mask filters, effects and shaders you can find here.