Android BlurMaskFilter не влияет на canvas.drawOval, пока текст размыт

Я пытался создать собственное представление с размытыми фигурами под текстом. Проблема в том, что BlurMaskFilter не влияет ни на какую фигуру, которую я рисую на холсте. Вот как я инициализирую объекты Paint в конструкторе:

paint = new Paint(0);
paint.setColor(0xffffffff);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

И я вызываю такие функции в onDraw():

canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", x, y, paint);

Но это то, что я вижу.

The Oval is not blurred yet the text is blurred.

Использование Android 4.0 SDK и тестирование на устройстве Galaxy Nexus 4.0.4 (UK ). Мне интересно, является ли это ошибкой в ​​​​4.0.4, поскольку я тестировал ее на эмуляторе с 4.0 и 4.0.3, и на них он отлично размывался, если только я не делаю что-то совершенно неправильно?

РЕДАКТИРОВАТЬ :Вот расширенный код View для тестирования на других платформах.

import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class BlurTestView extends View{

    private Paint paint;
    private Paint mShadowPaint;
    private int size = 100;
    private RectF mShadowBounds = new RectF();

    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);
        paint = new Paint(0);
        paint.setColor(0xff333333);
        paint.setTextSize(size);
        paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

        mShadowPaint = new Paint(0);
        mShadowPaint.setColor(0xff333333);
        mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

        mShadowBounds.top = size;
        mShadowBounds.bottom = mShadowBounds.top+(size /2);
        mShadowBounds.left = 0;
        mShadowBounds.right = (int)paint.measureText("hello");
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        canvas.drawOval(mShadowBounds,mShadowPaint);
        canvas.drawText("hello", 0, size, paint);
    }

}
24
задан fasih.rana 11 July 2012 в 09:45
поделиться