学习笔记——Paint 1(MaskFilter)
对于Paint没有很好的深入的学习过,在工作之余再巩固巩固。
1.Paint的BlurMaskFilter(模糊效果)
自定义一个View继承View 重写里面的onDraw方法。这里直接上代码了:
@Override
protected 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);
学习笔记——Paint 1(MaskFilter)的更多相关文章
- jsp&servlet学习笔记
1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- Swift学习笔记一
最近计划把Swift语言系统学习一下,然后将MagViewer用这种新语言重构一次,并且优化一下,这里记录一下Swift的学习笔记. Swift和Objective-C相比,在语法和书写形式上做了很多 ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- 学习笔记之Java程序设计实用教程
Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- AU3学习笔记
目录 1. AU3是什么?能做什么? 2. 乱学AU3中的命令(语言相关)? 3. 通过简单示例学习AU3? 4. 正则表达式的学习(对大小写敏感) 5.对于GUI的相关学习 1. AU ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
随机推荐
- 用libtommath实现RSA算法
RSA算法描述: 1) 选择两个大素数 p.q, 计算 n = p*q; 2) 产生 e, d 使: e*d = 1mod(p-1)(q-1) e 与 (p-1)(q-1) 互质 [公钥] e.n [ ...
- poj3565Ants——KM算法
题目:http://poj.org/problem?id=3565 首先,我们神奇地发现,没有相交边的匹配可以转化为距离和最小的匹配,所以可以使用KM算法求带权匹配: 要求的是距离和最小,所以把边权转 ...
- wampServer 设置
设置端口 打开 C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf 文件 找到“Listen 80”和“ServerName localhost:80”,紧接 ...
- bzoj4004
线性基 构成线性基的个数是定的,所以我们对价值进行贪心就行了,根据拟阵那套理论,我们排个序,然后能塞进去就塞,这样就求出最小值了. 思维江化,只要是多维向量都能用线性基搞. #include<b ...
- 使用 Git 命令去管理项目的版本控制(一)
参考资料:参考 参考 声明本文是作者原创,是自己的学习笔记,仅供学习参考. 在 10.11.2Mac系统中,要显示隐藏的文件夹使用命令行: defaults write com.apple.find ...
- Linux 静态库 & 动态库
转自:http://blog.chinaunix.net/uid-26833883-id-3219335.html 一.什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执 ...
- jquery table表格 获取选中的某一行和某一列的值
table class="table table-hover" id="test123"> <tr> <th width="4 ...
- C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...
- CodeForces660B【模拟—水】
感觉模拟题用函数分块写比较清晰~传参的话,字符串要么直接全局,或者指针也是容易操作,总之思路清晰,然后分块清晰,模拟wa的少吧. 这题水题,不说了. #include <bits/stdc++. ...
- 3D max模型导入unity 3D中注意事项
一.单位,比例统一 在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例.统一单位为米. ...