Попробуйте создать свой источник и маскировать растровые изображения отдельно. Большинство примеров, которые я видел, включают использование двух растровых изображений и использование drawBitmap для выполнения маскирования.
Я использую PorterDuff.Mode.DST_IN для краски, затем рисую исходное изображение (без краски), а затем изображение маски (с краской). Примерно так:
Bitmap bitmapOut = Bitmap.createBitmap(sizeX, sizeY,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapOut);
Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
xferPaint.setColor(Color.BLACK);
xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(sourceImage, 0, 0, null);
canvas.drawBitmap(alphaMask, 0, 0, xferPaint);
На этом этапе bitmapOut содержит мое замаскированное изображение.