学习笔记——Paint 1(MaskFilter)
2024-09-04 07:13:35
对于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);
最新文章
- Talk about VR
- 代码重构-4 通用方法 用 static
- convert NameValueCollection/Dictionary<;string, object>; to JSON string
- dataguru试听课程
- 使用EntityFramework连接 Mysql
- FolderBrowserDialog组件选择文件夹
- javascript笔记5之流程控制语句
- ajax验证码检测
- SQL Server 基础 03 查询数据基础
- 生成自己的Webapi帮助文档(二)
- 经验分享:如何用grep对PHP进行代码审计
- 微信小程序开发之图片预览
- HTML---标签的分类 | display | visibility
- mysql----------mysql的一些常用命令
- db2 报错 sqlcode=-420 自动类型转换的问题
- HTML、CSS知识点,面试开发都会需要--No.3 盒子模型
- Java设计模式(17)解释器模式(Interpreter模式)
- 【原创】python __all__ 的用法
- vue中使用swiper并自定义分页器样式
- python算法之希尔排序
热门文章
- php获取YouTube视频信息的方法
- linux sdk配置
- pdf2swf 转换时报This file is too complex to render- SWF only supports 65536 shapes at once
- git常见错误及解决方案总结
- Tomcat之the jre_home environment variable is not defined correctly this environment variable is need
- SPOJ CIRU The area of the union of circles (计算几何)
- UVa 1001 Say Cheese (Dijkstra)
- 怎样让自定义Cell的图片和文本自适应高度
- 序列化框架MJExtension详解 + iOS ORM框架
- 让TinyXML保存文件为UTF-8格式