2011-01-11 2 views
0

Ich habe ein Array von Koordinaten erstellt. Die Mitte eines Bildes sollte sich durch diese Koordinaten bewegen. Ich habe TranslateAnimation verwendet, um es zu erreichen. Während der Animation bewegt sich das Bild jedoch innerhalb der letzten zwei Koordinaten. Unten ist mein Code:Bewegt Bild durch verschiedene x, y Koordinaten

private void CreateAnimationAndRun() { 
     // move to the different coordinates one by one 
     for(int k=0; k<xpoints.length; k++) { 
      if(k==0) { 
      x1 = xstart; 
       y1 = ystart; 
      } else { 
      x1 = xpoints[k-1]; 
      y1 = ypoints[k-1]; 
      } 
      x2 = xpoints[k]; 
      y2 = ypoints[k]; 
      TranslateAnimation translateAnimation = new TranslateAnimation(x1, x2, y1, y2); 
      translateAnimation.setDuration(1000); 
      translateAnimation.setAnimationListener(anim_listener); 
      imv1.startAnimation(translateAnimation); 
     } 
    } 

Die obige Funktion hat auf einem Button-Klick aufgerufen wurde.

Antwort

-1

Ich hatte nur ein paar Stunden, um Android Animation selbst zu spielen, also hoffe ich, dass dies nicht irreführend ist.

Ich denke, das Problem ist, dass Ihre Schleife die Animation mit jeder Iteration überschreibt, so dass wenn Sie alles ausführen, Sie die letzte Animation (zwischen den letzten zwei Punkten) sehen.

Stattdessen müssen die Animationen mit unterschiedlichen Startzeiten generiert werden. Soweit ich das bisher verstanden habe, besteht die beste Möglichkeit darin, ein animationSet zu erstellen und es mithilfe von loop mit Animationen zu laden, die sich in der Startzeit über setStartOffset() unterscheiden. Dann können Sie auf Ihrem Klick einfach das animationSet starten. Alternativ kann der Klick sie in der Schleife erstellen und setStartTime() verwenden, um sie an den entsprechenden Stellen zu spielen.