码迷,mamicode.com
首页 > 移动开发 > 详细

Android 4.0以上BlurMaskFilter效果无效

时间:2014-06-15 00:37:41      阅读:895      评论:0      收藏:0      [点我收藏+]

标签:android   style   class   blog   java   http   

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的

  <uses-sdk
          android:minSdkVersion="8"
          android:targetSdkVersion="14" />

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

 

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

 

bubuko.com,布布扣             bubuko.com,布布扣

 

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);
		}
	}
}

 

 

Android 4.0以上BlurMaskFilter效果无效,布布扣,bubuko.com

Android 4.0以上BlurMaskFilter效果无效

标签:android   style   class   blog   java   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!