Animation ansehen

Sie können das Ansichtsanimationssystem verwenden, um in Ansichten angepasste Animationen durchzuführen. Animation für ältere Kinder berechnet die Animation mit Informationen wie Startpunkt, Endpunkt, Größe, Drehung weitere gängige Aspekte von Animationen.

Eine Tween-Animation kann eine Reihe einfacher Transformationen (Position, Größe, Drehung, und Transparenz) für den Inhalt eines View-Objekts. Wenn Sie also ein TextView-Objekt haben, können Sie den Text verschieben, drehen, vergrößern oder verkleinern. Wenn es eine Hintergrundbild ändern, wird das Hintergrundbild zusammen mit dem Text angepasst. animation package stellt alle Klassen bereit, die in einer Tween-Animation verwendet werden.

Eine Abfolge von Animationsanweisungen definiert die Tween-Animation, die entweder durch XML oder Android-Code. Wie bei der Definition eines Layouts wird eine XML-Datei empfohlen, da sie besser lesbar ist. wiederverwendbar und anpassbar ist als die Hartcodierung der Animation. Im folgenden Beispiel verwenden wir XML. (An Weitere Informationen zum Definieren einer Animation im Anwendungscode anstelle von XML finden Sie in der AnimationSet und andere abgeleitete Animation-Klassen.)

Die Animationsanweisungen definieren die Transformationen, die stattfinden sollen, und wie lange es dauern sollte, bis sie angewendet werden. Transformationen können sequenziell oder gleichzeitig erfolgen Sie können beispielsweise den Inhalt einer TextView von links nach rechts verschieben und dann drehen. um 180 Grad oder Sie können den Text gleichzeitig verschieben und drehen. Jede Transformation dauert ein Gruppe von Parametern für diese Transformation (Startgröße und Endgröße für Größe) Änderung, Start- und Endwinkel für die Drehung usw.) sowie eine Reihe gängiger (z. B. Startzeit und Dauer). Um mehrere Transformationen durchzuführen geben Sie ihnen dieselbe Startzeit. damit sie sequentiell sind, plus die Dauer der vorherigen Transformation.

Die Animations-XML-Datei gehört in das Verzeichnis res/anim/ deines Android-Geräts Projekt arbeiten. Die Datei muss ein einzelnes Stammelement haben: Dies ist entweder ein einzelnes <alpha>, <scale>, <translate> <rotate>, Interpolator- oder <set>-Element, das Gruppen dieser Elemente (die eine weitere <set> enthalten können). Standardmäßig werden alle Animationsanweisungen werden gleichzeitig angewendet. Damit sie sequenziell auftreten, müssen Sie und geben Sie das Attribut startOffset an, wie im folgenden Beispiel gezeigt.

Der folgende XML-Code aus einem der ApiDemos wird verwendet, um das Dehnen und anschließendes Drehen und View-Objekt drehen.

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

Die Bildschirmkoordinaten, die in diesem Beispiel nicht verwendet werden, stehen oben links (0,0) und wenn Sie nach unten und nach rechts gehen.

Einige Werte, wie z. B. pivotX, können relativ zum Objekt selbst oder relativ zum Parent. Achten Sie darauf, das richtige Format zu verwenden: „50“ für 50% relativ zum übergeordneten Element, oder „50 %“ 50% relativ zu sich selbst).

Durch Zuweisen einer Interpolator können Sie bestimmen, wie eine Transformation im Laufe der Zeit angewendet wird. Android umfasst mehrere abgeleitete Interpolator-Klassen, verschiedene Geschwindigkeitskurven angeben, z. B. AccelerateInterpolator weist darauf hin, dass eine Transformation langsam und beschleunigen soll. Jedes hat einen Attributwert, der in der XML-Datei angewendet.

Mit dieser XML-Datei als hyperspace_jump.xml in res/anim/ gespeichert des Projekts enthält, verweist der folgende Code darauf und wendet ihn auf ein ImageView-Objekt aus dem Layout an.

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

Als Alternative zu startAnimation() können Sie eine Startzeit für den Animation mit Animation.setStartTime() und weisen Sie die Animation dann der Ansicht mit View.setAnimation() zu.

Weitere Informationen zur XML-Syntax sowie zu verfügbaren Tags und Attributen finden Sie unter Animationsressourcen.

Hinweis:Unabhängig davon, wie die Animation verschoben oder vergrößert wird, werden die Grenzen der Ansicht, die Ihre Animation enthält, nicht automatisch angepasst. Die Animation wird dennoch außerhalb ihrer Ansicht gezeichnet und nicht abgeschnitten. Es wird jedoch abgeschnitten, wenn die Animation die Grenzen der übergeordneten Ansicht überschreitet.