最终效果图:
背景图
由于图片是白色的,所以跟网页背景混在一起了
前景图
代码
public class MaskImageView extends ImageView {
private Xfermode mXfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN);
public MaskImageView(Context context) {
this(context, null);
}
public MaskImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MaskImageView(Context context, AttributeSet attrs, int defStyle, Paint paint) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
if (!(getDrawable() instanceof BitmapDrawable)) {
super.onDraw(canvas);
return;
}
int saveFlags = Canvas.MATRIX_SAVE_FLAG
| Canvas.CLIP_SAVE_FLAG
| Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
| Canvas.FULL_COLOR_LAYER_SAVE_FLAG
| Canvas.CLIP_TO_LAYER_SAVE_FLAG;
canvas.saveLayer(0, 0, getWidth(), getHeight(), null, saveFlags);
getBackground().draw(canvas);
BitmapDrawable image = (BitmapDrawable) getDrawable();
image.getPaint().setXfermode(mXfermode);
image.draw(canvas);
canvas.restore();
}
}