学习笔记——Paint 1(MaskFilter)

对于Paint没有很好的深入的学习过,在工作之余再巩固巩固。

1.Paint的BlurMaskFilter(模糊效果)

自定义一个View继承View 重写里面的onDraw方法。这里直接上代码了:

@Overrideprotected void onDraw(Canvas canvas) {    BlurMaskFilter bmf = null;    Paint paint = new Paint();    paint.setAntiAlias(true);           //抗锯齿    paint.setColor(Color.RED);          //画笔颜色    paint.setStyle(Paint.Style.FILL);   //画笔风格    paint.setTextSize(68);              //绘制的文字大小    paint.setStrokeWidth(5);            //画笔粗细

bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.NORMAL);    paint.setMaskFilter(bmf);    canvas.drawText("最喜欢兰了",100,100,paint);

bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.OUTER);    paint.setMaskFilter(bmf);    canvas.drawText("最喜欢兰了",100,200,paint);

bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.INNER);    paint.setMaskFilter(bmf);    canvas.drawText("最喜欢兰了",100,300,paint);

bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.SOLID);    paint.setMaskFilter(bmf);    canvas.drawText("最喜欢兰了",100,400,paint);

setLayerType(View.LAYER_TYPE_SOFTWARE,null);}

这里模糊设置主要靠 bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.SOLID);其中两个参数,第一个参数:指模糊边缘的半径第二个参数:指模糊的类型 有4种值,详细如下:BlurMaskFilter.Blur.NORMAL :内外模糊BlurMaskFilter.Blur.OUTER :外部模糊BlurMaskFilter.Blur.INNER :内部模糊BlurMaskFilter.Blur.SOLID :内部加粗,外部模糊

效果图如下:

2.EmbossMaskFilter(浮雕效果)

使用方式与BlurMaskFilter相同,主要部分在于其构造方法。代码如下:
float[] direction = {1, 1, 3}; //设置光源方向float light=0.4f;       //设置环境光亮度float specular=8;       //设置镜面反射系数float blur=3.0f;        //模糊半径EmbossMaskFilter emboss = new EmbossMaskFilter(direction, light, specular, blur);

Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.GREEN);paint.setStyle(Paint.Style.FILL);paint.setTextSize(70);paint.setStrokeWidth(8);paint.setMaskFilter(emboss);

paint.setMaskFilter(emboss);canvas.drawText("最喜欢兰了!!",50,100,paint);

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);canvas.drawBitmap(bitmap,150,200,paint);

setLayerType(View.LAYER_TYPE_SOFTWARE,null);  //关闭硬件加速

构造方法为:EmbossMaskFilter emboss = new EmbossMaskFilter(direction, light, specular, blur);其中4个参数:第一个参数:direction 代表光源的方向,一个float类型的集合 用于控制x,y,z的光源方向第二个参数:light 表示环境光亮度,0到1之间第三个参数:specular 定义的镜面反射系数第四个参数:blur 模糊半径

注意事项:使用MaskFilter时注意,当targetSDKVersion>=14的时候,MaskFilter就不会起效果了。Android在API14以上版本默认开启硬件加速。一般的关闭方法。Application :在配置文件的application节点添加:android:hardwareAccelerated=‘true’Activity:在配置文件的activity节点添加android:hardwareAccelerated=‘false’View:获取View对象调用或者直接在onDraw方法里设置 view.setLayerType(View.LAYER_TYPE_HARDWARE,null);
				
时间: 2024-10-09 04:12:44

学习笔记——Paint 1(MaskFilter)的相关文章

<老友记>学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

疯狂Android讲义 - 学习笔记(六)

第7章 7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory 7.2 绘图 7.2.1 Android绘图基础:Canvas.Paint等 Android的绘图应该继承View组件,并重写onDraw(Canvas canvas) 方法即可,Canvas代表了“依附”于指定View的画布.表7.1 Canvas的绘制方法 Paint代表了Canvas上的画笔,Paint类主要用于设置绘制风格,包括画笔颜色.画笔粗细.填充风格等. 7.2

Android自定义View学习笔记04

Android自定义View学习笔记04 好长时间没有写相关的博客了,前几周在帮学姐做毕设,所以博客方面有些耽误.过程中写了一个类似wp的磁贴的view,想再写个配套的layout,所以昨天看了一下自定义viewGroup的相关知识-晚上睡觉想了一下可行性不是很高-代码量还不如直接自己在xml上写来得快,速度上也是个问题.今天看了一下张鸿洋老师的Android 自定义View (三) 圆环交替 等待效果这篇博文,再加上前一段时间看到的一幅图,结合之前写的一个圆形imageView的实现博文And

QDeclarativeItem学习笔记

最近在用QDeclarativeItem的继承来做Qt界面的控件,一开始发现怎么样也没法自动调用paint函数,后来查看了资料,发现如下字句: You can subclass QDeclarativeItem to provide your own custom visual item that inherits these features. Note that, because it does not draw anything, QDeclarativeItem sets the QGr

Android学习笔记进阶16之BitmapShader

<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲染器(Shader). bitmap   在渲染器内使用的位图 tileX      The tiling mode for x to draw the bitmap in.   在位图上X方向花砖模式 tileY  

Android学习笔记进阶之在图片上涂鸦(能清屏)

Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java [java] view plaincopy package xiaosi.handWriting; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import andro

孙鑫视频VC++深入详解学习笔记

Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesson5: 文本编程 Lesson6: 菜单编程 Lesson7: 对话框编程 Lesson9: 定制应用程序的外观 Lesson10: 绘图控制 Lesson11 图形的保存和重绘 Lesson12 文件操作 Lesson 13: 文档串行化 Lesson14 网络编程 Lesson 15 多线程 Lesson 16 线程同步

Android自定义View学习笔记03

Android自定义View学习笔记03 预备知识 BitMap类 BitMap位图类,其中有一个嵌套类叫Bitmap.Config,内部有四个枚举值.这个类的作用是定义位图存储质量,即存储一个像素的位数,以及是否能显示透明.半透明颜色(Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as w

Android自定义view学习笔记02

Android自定义view学习笔记02 本文代码来自于张鸿洋老师的博客之Android 自定义View (二) 进阶 学习笔记,对代码进行些许修改,并补充一些在coding过程中遇到的问题.学习的新东西. 相关代码 //CustomImageView.java package mmrx.com.myuserdefinedview.textview; import android.content.Context; import android.content.res.TypedArray; im