Transparente Bitmaps mit Canvas (Android) zeichnen

8

Ich habe ein Bitmap-Objekt und möchte es in ein Canvas-Objekt mit verschiedenen Transluzenzstufen rendern (d. h. die gesamte Bitmap teilweise durchschauen lassen). Zum Beispiel habe ich Sprites in einem Spiel (das über den Anfang eines Bitmap-Hintergrunds gezeichnet wird), die ich ausblenden möchte, um nicht sichtbar zu sein. Kann ich das tun, ohne auf OpenGL zurückgreifen zu müssen?

    
wordyword 17.03.2010, 23:10
quelle

2 Antworten

12

Sie sollten in der Lage sein, eine Tween-Animation zu definieren und diese Animation auf eine imageView anzuwenden. Die XML-Ressource ähnelt der folgenden (benannte fade_animation.xml):

%Vor%

Dann würden Sie diese Animation laden und anwenden, sobald sie fertig ist:

%Vor%

Es gibt auch andere Optionen. Wenn Sie Bitmaps verwenden und keine Animation erstellen möchten, können Sie den Alpha-Wert jedes Frames manuell verringern, etwa so:

%Vor%

Haben Sie eine dieser Optionen versucht?

    
YGL 31.05.2010 04:57
quelle
-1

Wenn Sie das Android-Dokument (das auf JSE basierend auf einer komplett alternativen GUI aussieht) betrachten, erhalten Sie im Folgenden ein Alpha-Kanal unterstützendes Bild:

%Vor%

Solange die Quelle Bitmap alpha unterstützt, sollten Sie in der Lage sein, sie auf eine andere Bitmap zu malen und ihre Alpha-Werte zu berücksichtigen.

Um es auszublenden, müssen Sie das Bild mit einer geeigneten Verzögerung (aber Ereignis von einem Timer, nicht in einer Schleife, wenn das Rendering-System von Android unterscheidet sich sehr stark von anderen Javas) wiederholt den Alpha-Kanal für jeden zu malen Pixel auf jeder nachfolgenden Farbe.

%Vor%

Vorbehalt 1: Ich habe diesen Code in-situ aus dem JavaDoc geschrieben; Es wurde nicht kompiliert oder getestet.

Vorbehalt 2: Wenn die Farbauflösung des Hardwaregeräts keinen Alphakanal unterstützt (allgemein bekannt als 32-Bit-Farbe), kann das Malen von Bildern auf dem zugrunde liegenden Grafiksystem einfach ignorieren. Kanal). Aber jedes Compositing, das Sie vorher auf einem Back-Buffer-Image ausführen, sollte respektiert werden. Der Punkt, an dem Sie haben können ist, Double-buffered painting zu verwenden, um Alpha-Blending durchzuführen, während immun gegen die zugrunde liegenden Gerätefunktionen / config.

ist     
Lawrence Dol 20.03.2010 19:25
quelle

Tags und Links