Android 图层混合模式 PorterDuff.Mode
PorterDuff.Mode它是将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值.
PorterDuff.Mode共有18种
Android 中使用 图层混合模式常见的地方有三种:
组合渲染ComposeShader (详见: Android Paint总结)
画笔: Paint.setXfermode()
颜色过滤器: PorterDuffColorFilter
本文主要简单说下第二种 画笔: Paint.setXfermode()
PorterDuff.Mode
每一个图层混合模式代表一种规则,根据每种规则计算混合之后的透明通道值和颜色值
使用图层混合模式有几个需要注意的点:
图层混合模式仅作用于src源图像
意思是:以下面谷歌的demo中的第一个为例使用的模式为PorterDuff.Mode.CLEAR
,源图像src为矩形图 目标图为圆形图dst,PorterDuff.Mode.CLEAR表示清除所有颜色值和透明通道,我们从效果可以看到,目标图dst只有与源图像src相交的地方才会有影响
禁用硬件加速
原因: 在Android api 14之后,图层混合的有些api是不支持硬件加速的,系统的硬件加速是默认开启的,所以在使用图层混合模式之前,禁用掉硬件加速 ,方式如下:
//禁止硬件加速
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
离屏绘制
原因: 在不采用离屏绘制的情况下,控件的