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?
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?
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