我在玩位图遮罩,尝试ALPHA_8
用PorterDuff.Mode.DST_IN
Paint 绘制位图遮罩时偶尔发现一个有趣的问题。至少在Android 6.x和5.x上它不起作用。
这是我的示例可绘制代码:
public class MaskedDrawablePorterDuffDstIn extends Drawable {
private Bitmap mPictureBitmap;
private Bitmap mMaskBitmap;
private Bitmap mBufferBitmap;
private Canvas mBufferCanvas;
private final Paint mPaintDstIn = new Paint();
public MaskedDrawablePorterDuffDstIn() {
mPaintDstIn.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
}
@Override
public void draw(Canvas canvas) {
if (mPictureBitmap == null || mMaskBitmap == null) {
return;
}
mBufferCanvas.drawBitmap(mPictureBitmap, 0, 0, null);
mBufferCanvas.drawBitmap(mMaskBitmap, 0, 0, mPaintDstIn);
canvas.drawBitmap(mBufferBitmap, 0, 0, null);
}
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
final int width = …
Run Code Online (Sandbox Code Playgroud)