参考
PorterDuff.Mode
PorterDuff.Mode 是用来指定两个图像共同绘制时的颜色策略的。
它是一个 enum,不同的 Mode 可以指定不同的策略
效果示例
PorterDuff.Mode.DST_OUT
PorterDuff.Mode.DST_IN
Mode详述
PorterDuff.Mode 一共有 17 个,可以分为两类
- Alpha 合成 (Alpha Compositing)
- 混合 (Blending)
Alpha 合成
「PorterDuff」 并不是一个具有实际意义的词组,而是两个人的名字(准确讲是姓)。这两个人当年共同发表了一篇论文,描述了 12 种将两个图像共同绘制的操作(即算法)。而这篇论文所论述的操作,都是关于 Alpha 通道(也就是我们通俗理解的「透明度」)的计算的,后来人们就把这类计算称为Alpha 合成 ( Alpha Compositing ) 。
效果直接盗 Google 的官方文档了。
源图像和目标图像:
Alpha 合成:
Blending 混合
是 Photoshop 等制图软件里都有的那些混合模式(multiply darken lighten 之类的)。
这一类操作的是颜色本身而不是 Alpha 通道,并不属于 Alpha 合成,所以和 Porter 与 Duff 这两个人也没什么关系,不过为了使用的方便,它们同样也被 Google 加进了 PorterDuff.Mode 里。
效果依然盗 官方文档。
结论
对于 Alpha 合成类的操作,掌握他们,并在实际开发中灵活运用;而对于混合类的,你只要把它们的名字记住就好了,这样当某一天设计师告诉你「我要做这种混合效果」的时候,你可以马上知道自己能不能做,怎么做。
另外:PorterDuff.Mode 建议你动手用一下试试,对加深理解有帮助。