对于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);

最新文章

  1. Talk about VR
  2. 代码重构-4 通用方法 用 static
  3. convert NameValueCollection/Dictionary<string, object> to JSON string
  4. dataguru试听课程
  5. 使用EntityFramework连接 Mysql
  6. FolderBrowserDialog组件选择文件夹
  7. javascript笔记5之流程控制语句
  8. ajax验证码检测
  9. SQL Server 基础 03 查询数据基础
  10. 生成自己的Webapi帮助文档(二)
  11. 经验分享:如何用grep对PHP进行代码审计
  12. 微信小程序开发之图片预览
  13. HTML---标签的分类 | display | visibility
  14. mysql----------mysql的一些常用命令
  15. db2 报错 sqlcode=-420 自动类型转换的问题
  16. HTML、CSS知识点,面试开发都会需要--No.3 盒子模型
  17. Java设计模式(17)解释器模式(Interpreter模式)
  18. 【原创】python __all__ 的用法
  19. vue中使用swiper并自定义分页器样式
  20. python算法之希尔排序

热门文章

  1. php获取YouTube视频信息的方法
  2. linux sdk配置
  3. pdf2swf 转换时报This file is too complex to render- SWF only supports 65536 shapes at once
  4. git常见错误及解决方案总结
  5. Tomcat之the jre_home environment variable is not defined correctly this environment variable is need
  6. SPOJ CIRU The area of the union of circles (计算几何)
  7. UVa 1001 Say Cheese (Dijkstra)
  8. 怎样让自定义Cell的图片和文本自适应高度
  9. 序列化框架MJExtension详解 + iOS ORM框架
  10. 让TinyXML保存文件为UTF-8格式