android mask,Android 4.0以上BlurMaskFilter效果无效

Android MaskFilter的基本使用:

MaskFilter类可以为Paint分配边缘效果。对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换。Android包含了下面几种MaskFilter:BlurMaskFilter   指定了一个模糊的样式和半径来处理Paint的边缘。EmbossMaskFilter  指定了光源的方向和环境光强度来添加浮雕效果。要应用一个MaskFilter,可以使用setMaskFilter方法,并传递给它一个MaskFilter对象。下面的例子是对一个已经存在的Paint应用一个EmbossMaskFilter:

// 设置光源的方向

float[] direction = new float[]{ 1, 1, 1 };

//设置环境光亮度

float light = 0.4f;

// 选择要应用的反射等级

float specular = 6;

// 向mask应用一定级别的模糊

float blur = 3.5f;

EmbossMaskFilter emboss=new EmbossMaskFilter(direction,light,specular,blur);

// 应用mask myPaint.setMaskFilter(emboss);

SDK中包含的FingerPaint API demo是说明如何使用MaskFilter的一个非常好的例子。它展示了这两种filter的效果。

但是:

在Manifest.xml的

android:minSdkVersion="8"

android:targetSdkVersion="14" />

targetSdkVersion设置为14或者以上的时候,BlurMaskFilter就不会起作用了!

图一 targetSdkVersion="8"图二targetSdkVersion="14"

adf195b0870df5086698d117bfc52252.png             7c10f8052818e0169b37ca38339eba27.png

Demo代码:

package com.example.test;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BlurMaskFilter;

import android.graphics.BlurMaskFilter.Blur;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Paint.Style;

import android.graphics.Path;

import android.graphics.Rect;

import android.graphics.RectF;

import android.os.Bundle;

import android.view.View;

public class Canvas2Activity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new CanvasView(this));

}

class CanvasView extends View{

Paint paint = null;

Rect rect1 = null;

Rect rect2 = null;

Path path2 = null;

public CanvasView(Context context) {

super(context);

paint = new Paint();

paint.setFlags(Paint.ANTI_ALIAS_FLAG);

paint.setAntiAlias(true);

paint.setColor(Color.RED);

paint.setTextSize(20);

paint.setStyle(Style.FILL_AND_STROKE);

paint.setStrokeWidth(3);

paint.setSubpixelText(true);

BlurMaskFilter bmf = new BlurMaskFilter(50, Blur.SOLID);

paint.setMaskFilter(bmf);

rect2 = new Rect(300, 0, 500, 200);

path2 = new Path();

path2.moveTo(200, 200);

path2.quadTo(200, 200, 300, 400);

path2.lineTo(500, 500);

path2.close();

}

@SuppressLint("DrawAllocation")

@Override

protected void onDraw(Canvas canvas) {

// 绘制颜色

canvas.drawARGB(0x7F, 0x33, 0x66, 0x99);

canvas.drawRect(rect2, paint);

canvas.drawPath(path2, paint);

super.onDraw(canvas);

}

}

}

原文:http://www.cnblogs.com/xinye/p/3786169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值