znieh99
Fortgeschrittenes Mitglied
- 12
Dies ist ein Beispiel, wie man eine Bitmap als ImageView einblenden, rotieren und wieder ausblenden kann. Ich habe dazu eine .png Datei mit einer Größe von 50 x 50 gewählt, welche eine Spirale darstellt.
Schritt 1:
Im 'res' Verzeichnis einen Ordner erstellen (ich habe ihn 'anim' genannt).
Im Ordner 'anim' eine '.xml' Datei (ich habe sie 'rotate.xml' genannt) mit folgenden Inhalt erstellen:
Der ungewöhnliche Parameter 'android:toDegrees="1080" bewirkt, dass die Bitmap 3x gedreht wird (360° x 3). Das ermöglicht einen kontinuierlichen Bewegungsablauf.
Schritt 2:
In der Layout-Datei (bei mir 'activity_main.xml') wird die ImageView und der Steuer-Button hinzugefügt:
Die ImageView ist standardmäßig nicht sichtbar.
Der Button spricht eine Java-Methode 'startRotation' an.
Schritt 3:
Vervollständigen der Start-Activity. Die Schnittstelle 'Animation.AnimationListener' wird implementiert, die notwendigen Callbacks und die Methode zum starten der Animation werden erstellt.
Schritt 1:
Im 'res' Verzeichnis einen Ordner erstellen (ich habe ihn 'anim' genannt).
Im Ordner 'anim' eine '.xml' Datei (ich habe sie 'rotate.xml' genannt) mit folgenden Inhalt erstellen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Parameter für Rotation -->
<rotate android:fromDegrees="0"
android:toDegrees="1080"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:repeatMode="restart"
android:repeatCount="0"
android:interpolator="@android:anim/linear_interpolator"/>
</set>
Schritt 2:
In der Layout-Datei (bei mir 'activity_main.xml') wird die ImageView und der Steuer-Button hinzugefügt:
Code:
<!-- rotierende Spirale -->
<ImageView
android:id="@+id/spirale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"
android:src="@mipmap/spirale"/>
<!-- Steuerung zum Einschalten der rotierenden Spirale-->
<Button
android:id="@+id/start_rotation"
android:onClick="startRotation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Start Rotation"
/>
Der Button spricht eine Java-Methode 'startRotation' an.
Schritt 3:
Vervollständigen der Start-Activity. Die Schnittstelle 'Animation.AnimationListener' wird implementiert, die notwendigen Callbacks und die Methode zum starten der Animation werden erstellt.
Code:
public class MainActivity extends Activity implements Animation.AnimationListener {
private ImageView iv;
private Animation anim;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// Wenn der Button getippt wird, wird hier die ImageView (Bitmap) sichtbar
// gemacht, die Animation erstellt und ein Listener angebunden.
// Dann wird die Animation gestartet.
protected void startRotation(View v) {
iv = (ImageView) this.findViewById(R.id.spirale); //Instanz der Bitmap
iv.setVisibility(View.VISIBLE); //sichtbar machen
anim = AnimationUtils.loadAnimation(this, R.anim.rotate); //Animation erstellen
anim.setAnimationListener(this); //Listener
iv.startAnimation(anim); //Starte Animation
}
// Von den 3 folgenden notwendigen Callback des Listener wird in diesem
// Fall nur das Ende der Animation benötigt, um die ImageView wieder
// unsichtbar zu machen.
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// ImageView wird unsichtbar
iv.setVisibility(View.INVISIBLE);
}
}