Android自定义View-Paint详解
paint的使用
setstyle
- paint.style.fill:填充模式
- paint.style.stroke:画线模式
- paint.style.fill_and_stroke:填充+画线
setstrokecap
设置线头形状:
- buff:平头
- round:圆头
- square:方头
setshadowlayer
在绘制内容下面加一层阴影
setcolor setargb
reset
重置paint的所有属性为默认值,相当于重新new一个,性能更高。
set
把目标paint的所有属性全部复制过来。
setshader
shader 这个英文单词很多人没有见过,它的中文叫做「着色器」,也是用于设置绘制颜色的。「着色器」不是 android 独有的,它是图形领域里一个通用的概念,它和直接设置颜色的区别是,着色器设置的是一个颜色方案,或者说是一套着色规则。当设置了 shader
之后,paint
在绘制图形和文字时就不使用 setcolor/argb()
设置的颜色了,而是使用 shader
的方案中的颜色。
porterbuff.mode
- 目标图:指底板图
- 源图:指即将画上的图
lineargradient 线性渐变
radialgradient 辐射渐变
sweepgradient 扫描渐变
bitmapshader 位图填充
composeshader 混合着色器
setcolorfilter
colorfilter
这个类,它的名字已经足够解释它的作用:为绘制设置颜色过滤。颜色过滤的意思,就是为绘制的内容设置一个统一的过滤策略,然后 canvas.drawxxx()
方法会对每个像素都进行过滤后再绘制出来。
lightingcolorfilter 光照效果
lightingcolorfilter
的构造方法是 lightingcolorfilter(int mul, int add)
,参数里的 mul
和 add
都是和颜色值格式相同的 int 值,其中 mul
用来和目标像素相乘,add
用来和目标像素相加:
一个「保持原样」的「基本 lightingcolorfilter
」,mul
为 0xffffff
,add
为 0x000000
(也就是0),那么对于一个像素,它的计算过程就是:
setxfermode
xfermode
指的是你要绘制的内容和 canvas
的目标位置的内容应该怎样结合计算出最终的颜色。但通俗地说,其实就是要你以绘制的内容作为源图像,以 view 中已有的内容作为目标图像,选取一个 porterduff.mode
作为绘制内容的颜色处理方案。
使用xfermode需要设置离屏缓冲
api | 说明 |
---|---|
composeshader | 混合两种shader |
porterbuffcolorfilter | 增加一个单色的colorfilter |
xfermode | 绘制图层和底部图层的混合计算方式 |
以上就是android自定义view-paint详解的详细内容,更多关于android view-paint的资料请关注其它相关文章!
上一篇: 辣白菜豆腐汤没有辣酱可以吗
下一篇: 电商平台集体下架 H&M还在“嘴硬”什么
推荐阅读