自定义UI之Paint
Paint画笔
画笔的实现内部都是调用native方法的,画笔的基础Api
- setColor(Color.RED)
- setARGB(),setAlpha 设置颜色及透明度
- setAntiAlias(true) 抗锯齿
- setStyle() Paint.Style.STROKE/FILL/FILL_AND_STROKE 描边,填充效果
- setStrokeWidth() 描边宽度
- setStrokeCap() Paint.Cap.BUTT/ROUND/SQUARE 线尾部形状 默认BUTT,round圆角效果,方形
- setStrokeJoin() 拐角效果,MITER/ROUND/BEVEL 默认MITER尖角,圆角,折角
- setShader(Shader shader) 设置环形渲染器
- setXfermode() 设置图层混合模式
- setColorFilter()设置颜色过滤器
- setFilterBitmap(true) 设置双线性过滤,使图片更加平滑
- setMaskFilter() 设置画笔的遮罩滤镜
- setTextScalX(2) 设置缩放文本倍数
- setTextSize(38) 设置文本字体大小
- setTextAlign() 对齐方式
- setUnderLineText(true) 设置下划线
- getTextBounds(str, 0, str.length(), rect) 测量文本大小,将文本大小信息存放在rect中
- measureText(str) 测量文本的宽
- getFontMetrics()获取字体度量对象, 变量包括ascent,descent,top,bottom,leading ,字体的高度为descent - ascennt, leading为行间距是当前字的ascent - 上一个字的descent
setShader(Shader shader) 设置环形渲染器(着色器)
- LinearGradient 线性渲染
- RadilGradient 环形渲染
- SweepGradient 扫描渲染
- BitmapGradient 位图渲染
TileMode 平铺模式
- CLAMP 超出后 以最后像素拉升填充
- REPEAT 超出后重复平铺
- MIRROR 镜像填充
组合渲染器,图层混合模式Xfermode
PortorDuff.Mode
- 使用场景
- ComposeShader 组合渲染器
- Paint.setXfermode()
- porterDuffColorFilter 颜色过滤器
- 使用注意
LightColorFilter
颜色过滤器,可以过滤掉指定颜色
PorterDuffFilter
颜色和其他的图层混合
颜色矩阵ColorMatrixColorFilter
通过修改颜色矩阵Matrix数组中的值
画笔滤镜总结
- 简单的模拟光照效果,可以使用LightColorFilter
- 图像与颜色的,图层混合的实现,PorterDuffColorFilter
- 颜色数组及颜色举证实现滤镜效果