Samstag, 14. Dezember 2013

Android: Animationen einfügen

Im heutigen Post möchte ich beschreiben, wie man mit Animationen etwas mehr Leben in die eigenen Android Apps hauchen kann.
Bei der Android Programmierung gibt es hierfür im wensentlichen 3 Möglichkeiten, es gibt View Animations, Drawable Animations und Property Animations. In diesem Post möchte ich nur die letzte Klasse abdecken, welche zuletzte eingeführt wurde (in Android 3.0) und daher auch die meisten Möglichkeiten bietet und auch normalerweise genutzt wird.
Bei den Property Animations wiederrum gibt es 3 Subklassen: ValueAnimator, ObjectAnimator und AnimationSet. AnimationSet ist zuständig zum Verbinden mehrerer Animationen, dieser Klasse werde ich demnächst einen eigenen Post widmen.
Mit dem ValueAnimator lassen sich beliebige Eigenschaften über die Zeit verändern. In diesem Post möchte ich jedoch nur die Verwendung der Unterklasse ObjectAnimator beschreiben, welche speziell für das Animieren von Objekten erstellt wurde, was für die meisten Anwendungen ausreichten sollte.
Nun direkt zum Code. Im Beispiel erstellen wir ein LinearLayout, in welchem eine TextView und ein Button untereinander angeordnet werden, und die TextView per Animation nach Klick auf den Button nach rechts bewegt wird.
Zum Animieren brauchen wir den Namespace Android.Animation, welchen wir per using einbinden.
Dann erstellen wir den Animator von der Klasse ObjectAnimator aus und wählen hierbei, ob wir eine Integer oder Float Eigenschaft verändern müssen. Dieser Erzeugungsmethode übergeben wir dann den Namen des zu animierenden Objekts, den Namen der Zieleigenschaft als String und Start- und Endwert. Die folgenden Zeilen ändern die Eigenschaft Left des Objekts TxtView1 von 0 auf 100, verschieben das Objekt also nach rechts. In der zweiten Zeile legen wir die Dauer der Animation in Millisekunden fest, und in der dritten Zeile starten wir schließlich die Animation:

ObjectAnimator Animator = ObjectAnimator.OfInt(TxtView1, "Left", 0, 100);
Animator.SetDuration(1000);
Animator.Start();

Der komplette Code lautet:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

using Android.Animation;

namespace AnimationsExample
{
     [Activity (Label = "AnimationsExample", MainLauncher = true)]
     public class MainActivity : Activity
     {
          protected override void OnCreate (Bundle bundle)
          {
               base.OnCreate (bundle);

               LinearLayout Layout = new LinearLayout (this);
               Layout.Orientation = Orientation.Vertical;

               TextView TxtView1 = new TextView (this);
               TxtView1.Text = "I'm flying";
               Layout.AddView (TxtView1);

               Button Btn1 = new Button (this);
               Btn1.Text = "Animation";
               Layout.AddView (Btn1);

               Btn1.Click += (object sender, EventArgs e) => {
                    ObjectAnimator Animator = ObjectAnimator.OfInt(TxtView1, "Left", 0, 100);
                    Animator.SetDuration(1000);
                    Animator.Start();
               };

               SetContentView (Layout);
          }
     }
}

Keine Kommentare:

Kommentar veröffentlichen