2010-12-04 8 views
1

Ich arbeite an einem Live-Wallpaper. Das Hintergrundbild erfordert kleine bewegliche Bilder hinter einem großen fixierten Bild mit transparenten Bereichen. Die kleineren Bilder sind nur sichtbar, wenn sie sich in den transparenten Teilen des großen Bildes befinden.Android Canvas Mehrere Ebenen für WallpaperService.Engine

Hier ist, wie ich habe es bisher tun:

Canvas c = holder.lockCanvas(); 
c.save() 
drawSmallImages(c); //draw the movable images 
drawLargeImage(c); //draw the fixed large image 
c.restore(); 

Ich laufe dies durch Traceview und es sieht aus wie Android ist ein gutes Stück von Rechenleistung zu verbringen um das große Bild zu zeichnen, und idealerweise mich Ich möchte nur, dass es einmal gezeichnet wird, wenn die Tapete beginnt. Ich weiß nicht, wie man die kleineren Bilder hinter das größere Bild ziehen kann, ohne das große Bild nach den kleineren Bildern auf jedem Bild neu zu zeichnen.

+0

Keine Antwort, aber - vielleicht könnten Sie es tun, indem Sie eine Maske erstellen, die die leeren Teile des großen Bildes darstellt, und dann diese Maske verwenden, um die versteckten (oder offenbarten) Teile der kleinen Bilder auszublenden. Ich bin mir nicht sicher, ob das mehr Arbeit ist. –

Antwort

4

Der Inhalt des Canvas wird nicht gelöscht, sodass Sie Ihre Zeichnung einfach optimieren können, indem Sie kleine Teile löschen und den Clip rect verwenden, um nur einen Teil des großen Bildes neu zu zeichnen.