2016-04-12 11 views
0

Ich würde ein animiertes WatchFace für Android Wear erstellen. Ich habe 20 Bilder zum Hinzufügen (oder zum vollständigen Ändern) alle X ms zum Hintergrund.Android Wear: Animation in WatchFace

Jetzt: Ich habe this tutorial gefolgt, aber die Animation startet nicht. Ich sehe nur eine der zwanzig Bitmap über meinem Hintergrund:

if (isInAmbientMode()) { 
     canvas.drawBitmap(mBackgroundAmbient, SRC, DEST, null); 
} else { 
     canvas.drawBitmap(mBackground, SRC, DEST, null); 
     for (int i = 0; i < LoopBMP.length; i++) { 
      canvas.save(); 

      Bitmap cloud = LoopBMP[i]; 
      canvas.drawBitmap(cloud,centerX, centerY,null); 
      canvas.restore(); 
     } 
} 

Irgendwelche Vorschläge?

Antwort

0

Sie missverstehen, wie die CanvasWatchFaceService.Engine ihre Zeichnung macht. Ich vermute, dass das Code-Snippet, das Sie gepostet haben, in Ihrer onDraw-Methode ist; Diese Methode heißt einmal für jeden Frame Ihrer Animation.

Das bedeutet, dass Sie Ihre Animation "Schleife" außerhalb der onDraw-Methode verschieben müssen. Es gibt mehrere Möglichkeiten, dies zu erreichen, aber ich habe unten basierend auf Ihrem Code einen Versuch unternommen.

Beachten Sie, dass dies ein Ausschnitt ist, den ich gerade zusammengeworfen habe, um zu demonstrieren, worüber ich rede; es ist keineswegs bereit zu laufen. Insbesondere werden Sie eine Verzögerung zwischen den Frames Ihrer Animation wünschen. Sie können das mit einer Handler wie die für die zweite Hand in diesem Beispiel verwendet implementieren: http://developer.android.com/samples/WatchFace/Wearable/src/com.example.android.wearable.watchface/AnalogWatchFaceService.html#l117

+0

Ja, der Code ist in OnDraw(). Aber ich weiß, dass ich mehr Code/Zuweisungen in OnDraw verwende, das Wearable könnte mehr Batterie verbrauchen. – garsim