Android自定义View系列
- Android自定义View注意事项
- Android自定义View之Paint绘制文字和线
- Android自定义View之Canvas
- Android自定义View之图像的色彩处理
- Android自定义View之双缓冲机制和SurfaceView
- Android自定义View之Window、ViewRootImpl和View的三大流程
- Android自定义View之事件分发机制总结
- Android自定义View之requestLayout方法和invalidate方法
在日常开发过程中,图片的特效处理是一个很常见的需求。除了颜色特效,还有就是外形的特效,比如圆角图片,圆形图片等。今天我们就来学习下图片的外形特效相关的知识
Paint画笔特效
Paint有一个专门用于处理图片外形特效的API
//Paint.class
public Xfermode setXfermode(Xfermode xfermode) {
long xfermodeNative = 0;
if (xfermode != null)
xfermodeNative = xfermode.native_instance;
nSetXfermode(mNativePaint, xfermodeNative);
mXfermode = xfermode;
return xfermode;
}
在Android的SDK中Xfermode只有一个子类:PorterDuffXfermode
PorterDuffXfermode控制图像的混合模式,影响的是2个图层交集区域的显示方式。
//PorterDuff.class
public enum Mode {
/** [0, 0] */
CLEAR (0),
/** [Sa, Sc] */
SRC (1),
/** [Da, Dc] */
DST (2),
/** [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] */
SRC_OVER (3),
/** [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] */
DST_OVER (4),
/** [Sa * Da, Sc * Da] */
SRC_IN (5),
/** [Sa * Da, Sa