Как применить динамическую альфа-маску к тексту на Android

Я хочу создать динамическую альфа-маску с выделенными фигурами в виде кругов или что-то еще и применить ее к выделенному тексту на Android. Вот пример того, что я хочу: Альфа-маски

Я пытаюсь сделать это с помощью setXfermode(new PorterDuffXfermode(Mode.SRC_IN)) , но я не могу заставить его работать. Вот код, который у меня есть в onDraw(Canvas canvas) :

 Paint paint = new Paint(); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(Color.WHITE); canvas.drawCircle(50, 50, 50, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); paint.setColor(Color.RED); canvas.drawText("hello", 0, 50, paint); 

Заранее спасибо за вашу помощь

Solutions Collecting From Web of "Как применить динамическую альфа-маску к тексту на Android"

Попробуйте создать растровые изображения источника и маски отдельно. Большинство примеров, которые я видел, включают использование двух растровых изображений и использование 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 содержит мое замаскированное изображение.