什么是Shader
Shader中文名又叫着色器,它用于在绘制图形的同时,为图形添加特定的色彩效果
常见的Shader
BitmapShader:画图形的同时,画位图
LinearGradient:画图形的同时,画线性渐变
SweepGradient:画图形的同时,画扫描渐变
RadialGradient:画图形的同时,画辐射渐变
ComposeShader:组合渐变,多种着色器效果,以特定方式进行组合
Shader.TileMode
平铺模式,是指绘制区域大于给定图形时,剩下的空间如何填充
CLAMP:用最后一个像素的色彩值,填充所有剩下的区域
REPEAT:重复绘制给定的图形
MIRROR:以镜像的方式绘制给定的图形
PorterDuff.Mode
Porter和Duff是两个人名,它们总结出了图像混合时,色彩所有可能的组合方式
因此,PorterDuffMode指的就是图像混合方式 / 色彩组合方式
如下图所示,黄色圆为已存在的目标图像Dst,蓝色矩形为新叠加上去的源图像Src
PorterDuff.Mode.CLEAR 清除DST和SRC的所有像素
PorterDuff.Mode.SRC 只保留SRC的像素
PorterDuff.Mode.DST 只保留DST的像素
PorterDuff.Mode.SRC_OVER SRC的像素叠加在DST上方
PorterDuff.Mode.DST_OVER DST的像素叠加在SRC上方
PorterDuff.Mode.SRC_IN 取交集区域,只保留SRC像素
PorterDuff.Mode.DST_IN 取交集区域,只保留DST像素
PorterDuff.Mode.SRC_OUT 从SRC上移除交集部分
PorterDuff.Mode.DST_OUT 从DST上移除交集部分
PorterDuff.Mode.SRC_ATOP 保留DST全部,以及SRC的交集部分,并且SRC在上方
PorterDuff.Mode.DST_ATOP 保留SRC全部,以及DST的交集部分,并且DST在上方
PorterDuff.Mode.XOR 取DST和SRC的非交集部分
PorterDuff.Mode.DARKEN 变暗,保留DST和SRC全部,交集部分颜色加深
PorterDuff.Mode.LIGHTEN 变亮,保留DST和SRC全部,交集部分颜色变淡
PorterDuff.Mode.MULTIPLY 正片叠底,取交集区域,且颜色为DST和SRC的色彩叠加值
PorterDuff.Mode.SCREEN 滤色,保留DST和SRC全部像素,但图像在交集处,都根据灰度变为半透明,保留较白部分
PorterDuff.Mode.ADD 饱和度叠加,保留DST和SRC全部像素,但图像在交集处,饱和度进行叠加
PorterDuff.Mode.OVERLAY 根据DST的色彩,决定是MULTIPLY还是SCREEN
效果展示 - 霓虹灯效果
效果展示 - 渐变爱心效果
效果展示 - 雷达图效果
效果展示 - 放大镜效果
源码下载
Android常见Shader着色器效果源码.zip