Wie man dynamische Alpha-Maske auf einen Text auf Android anwendet

Ich möchte eine dynamische Alpha-Maske mit ziehbaren Formen als Kreise oder was auch immer, und wenden Sie es auf einen gezeichneten Text auf Android. Hier ist ein Beispiel für das, was ich will Alpha-Maske

Ich versuche es mit setXfermode(new PorterDuffXfermode(Mode.SRC_IN)) zu machen setXfermode(new PorterDuffXfermode(Mode.SRC_IN)) , aber ich kann es nicht funktionieren. Hier ist der Code, den ich in onDraw(Canvas canvas) Methode habe:

 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); 

Vielen Dank im Voraus für Ihre Hilfe

  • Wie kann ich ein Bild von einem Punkt zum anderen mit Android Canvas verschieben
  • Android-Leinwand ändern Hintergrundfarbe
  • Binärdaten aus Android in Javascript senden
  • Auf der Suche nach einer Erklärung von post / pre / set Übersetzen (im Matrix-Objekt) und wie man sie benutzt
  • Canvas - Zoomen, Verschieben und Skalieren auf Android
  • Android canvas drawText set Schriftgröße von der Breite?
  • Wie zeichnet man Bilder auf dem Rand des Bildes
  • Zeichne Text in einem Bogen mit Leinwand
  • One Solution collect form web for “Wie man dynamische Alpha-Maske auf einen Text auf Android anwendet”

    Versuchen Sie, Ihre Quell- und Masken-Bitmaps separat zu erstellen. Die meisten Beispiele, die ich gesehen habe, beinhalten zwei Bitmaps und verwenden drawBitmap, um die Maskierung durchzuführen.

    Ich benutze PorterDuff.Mode.DST_IN für die Farbe, dann zeichne das Quellbild (ohne Farbe) gefolgt von dem Maskenbild (mit der Farbe). Etwas wie das:

      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); 

    Zu diesem Zeitpunkt enthält bitmapOut mein maskiertes Bild.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.