Lassen Sie mich zuerst mein Ziel erklären. Ich versuche, einen Animation
zu machen, der die Eigenschaften eines ArcShape
ändert. Ein ArcShape's
Konstruktor nimmt zwei Felder: startAngle
und sweepAngle
. Ich möchte die sweepAngle
animieren, so dass es auf dem Bildschirm als ein kontinuierlich schrumpfender Kreis erscheint.Android benutzerdefinierte Animation für eine ArcShape
Sie können sich diese Animation vorstellen, indem Sie sich PacMan vorstellen. Stellen Sie sich vor, sein Mund ist geschlossen. Diese Animation wäre vergleichbar damit, dass er seinen Oberkiefer mehr und mehr öffnete, bis es keinen PacMan mehr gab.
Jetzt ... Ich habe ein paar Probleme mit der Umsetzung dieser. Erstens, sobald ein ArcShape
erstellt wird, gibt es keine eingebauten Methoden zum Ändern seiner sweepAngle
. Dies bringt mich zu meiner ersten Frage: Gibt es eine Möglichkeit, ArcShape
zu überschreiben und einige setSweepAngle
Methode zu implementieren? Oder muss ich eine new ArcShape
für jede sweepAngle
erstellen, die ich anzeigen möchte?
Jetzt auf die zweite Frage ... Angenommen, ich fand eine Lösung für das erste Problem, wie konnte ich das Animation
erstellen? Das ist der Kern das, was ich habe jetzt:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape's sweepAngle to currAngle. But HOW?
}
}
Ich musste "invalidate();" hinzufügen zur Methode applyTransformation, so dass die Ansicht mit dem neuen Winkel reDraw wird. – marmor
Ich befolgte die Anweisungen, aber meine benutzerdefinierte Ansicht wird nicht auf der Benutzeroberfläche angezeigt. kannst du deinen vollständigen Code posten? –
Ich weiß, ewig alte Post .... Aber ich sehe nicht, wie das den Bogen animiert. Es aktualisiert nur den aktuellen Winkel und dann können Sie es neu zeichnen, aber es ist nicht animiert. Also ... Wie hast du das genau animiert? –