欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android自定义View-Paint详解

程序员文章站 2022-04-29 09:17:50
paint的使用setstyle paint.style.fill:填充模式 paint.style.stroke:画线模式 paint.style.fill_and_stroke:...

paint的使用

setstyle

  • paint.style.fill:填充模式
  • paint.style.stroke:画线模式
  • paint.style.fill_and_stroke:填充+画线

Android自定义View-Paint详解

setstrokecap

设置线头形状:

  • buff:平头
  • round:圆头
  • square:方头

Android自定义View-Paint详解

setshadowlayer

在绘制内容下面加一层阴影

Android自定义View-Paint详解

setcolor setargb

Android自定义View-Paint详解

reset

重置paint的所有属性为默认值,相当于重新new一个,性能更高。

set

把目标paint的所有属性全部复制过来。

setshader

shader 这个英文单词很多人没有见过,它的中文叫做「着色器」,也是用于设置绘制颜色的。「着色器」不是 android 独有的,它是图形领域里一个通用的概念,它和直接设置颜色的区别是,着色器设置的是一个颜色方案,或者说是一套着色规则。当设置了 shader 之后,paint 在绘制图形和文字时就不使用 setcolor/argb() 设置的颜色了,而是使用 shader 的方案中的颜色。

porterbuff.mode

Android自定义View-Paint详解

  • 目标图:指底板图
  • 源图:指即将画上的图

Android自定义View-Paint详解

Android自定义View-Paint详解

lineargradient 线性渐变

Android自定义View-Paint详解

radialgradient 辐射渐变

Android自定义View-Paint详解

sweepgradient 扫描渐变

Android自定义View-Paint详解

bitmapshader 位图填充

Android自定义View-Paint详解

composeshader 混合着色器

Android自定义View-Paint详解

setcolorfilter

colorfilter 这个类,它的名字已经足够解释它的作用:为绘制设置颜色过滤。颜色过滤的意思,就是为绘制的内容设置一个统一的过滤策略,然后 canvas.drawxxx() 方法会对每个像素都进行过滤后再绘制出来。

lightingcolorfilter 光照效果

lightingcolorfilter 的构造方法是 lightingcolorfilter(int mul, int add) ,参数里的 muladd 都是和颜色值格式相同的 int 值,其中 mul 用来和目标像素相乘,add 用来和目标像素相加:

一个「保持原样」的「基本 lightingcolorfilter 」,mul0xffffffadd0x000000(也就是0),那么对于一个像素,它的计算过程就是:

Android自定义View-Paint详解

setxfermode

xfermode 指的是你要绘制的内容和 canvas的目标位置的内容应该怎样结合计算出最终的颜色。但通俗地说,其实就是要你以绘制的内容作为源图像,以 view 中已有的内容作为目标图像,选取一个 porterduff.mode 作为绘制内容的颜色处理方案。

使用xfermode需要设置离屏缓冲

api 说明
composeshader 混合两种shader
porterbuffcolorfilter 增加一个单色的colorfilter
xfermode 绘制图层和底部图层的混合计算方式

Android自定义View-Paint详解

以上就是android自定义view-paint详解的详细内容,更多关于android view-paint的资料请关注其它相关文章!