public class MaskFilterView extends View {
public MaskFilterView(Context context) {
super(context);
}
public MaskFilterView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MaskFilterView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public MaskFilterView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.img);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
//View从API Level 11才加入setLayerType方法
//设置软件渲染模式绘图
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
mPaint.setMaskFilter(new BlurMaskFilter(30f, BlurMaskFilter.Blur.NORMAL));
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
mPaint.setColor(Color.RED);
mPaint.setMaskFilter(new BlurMaskFilter(20, BlurMaskFilter.Blur.NORMAL));
int w=getWidth();
int h=getHeight();
canvas.drawRect(mBitmap.getWidth()+20,20,w*0.8f,mBitmap.getHeight(), mPaint);
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(50);
mPaint.setMaskFilter(new BlurMaskFilter(30f, BlurMaskFilter.Blur.OUTER));
canvas.drawText("OUTER abcd哈哈万剑123qwqeretyyuoip", 0, h * 1.0f / 2, mPaint);
mPaint.setMaskFilter(new BlurMaskFilter(30f, BlurMaskFilter.Blur.NORMAL));
canvas.drawText("NORMAL abcd哈哈万剑123qwqeretyyuoip", 0, h * 1.0f / 2 + 90, mPaint);
mPaint.setMaskFilter(new BlurMaskFilter(30f, BlurMaskFilter.Blur.SOLID));
canvas.drawText("SOLID abcd哈哈万剑123qwqeretyyuoip", 0, h * 1.0f / 2 + 180, mPaint);
mPaint.setMaskFilter(new BlurMaskFilter(30f, BlurMaskFilter.Blur.INNER));
canvas.drawText("INNER abcd哈哈万剑123qwqeretyyuoip", 0, h * 1.0f / 2 + 270, mPaint);
}
}