ImageView in LinearLayout animieren

E

erli2909

Fortgeschrittenes Mitglied
49
Hallo Leute, ich stehe vor einem Problem und finde auch nach reichlicher Googlesuche nichts..

Ich habe ein LinearLayout mit einem ImageView und vielen TextViews darunter.
Beim Start der Activity werden die Texte befüllt, das Bild wird aber erst über einen AsyncTask geladen, dauert also ein wenig.
Darum soll das Bild erst nicht sichtbar (visibilty: gone) sein und wenn es geladen wird soll es mit einer ScaleAnimation "groß werden". Dabei sollen alle weiteren Elemente des LinearLayouts mit der Animation mit nach unten rutschen..

Das Problem: Wenn ich die Animation starte, dann wird sofort die Höhe des ImageViews gesetzt und die TextViews werden sofort nach unten geschoben, und nicht animiert nach unten geschoben.

Ich hoffe mein Problem wird so verstanden und es kann mir jemand helfen.

Hier noch der Code der Animation:
Code:
ImageView imageViewPlayer = (ImageView) findViewById(R.id.imageViewPlayer);
if (bitmap == null) {
	File imgFile = new File(getFilesDir() + "/" + imgFileDir);
	bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
}
imageViewPlayer.setImageBitmap(bitmap);
ScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1);
anim.setInterpolator(getApplication(),
		android.R.interpolator.accelerate_decelerate);
anim.setDuration(5000);
imageViewPlayer.startAnimation(anim);
imageViewPlayer.setVisibility(View.VISIBLE);

Ausschnitt aus der xml:

Code:
<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/imageViewPlayer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:visibility="gone" />
				
            <TextView
                android:id="@+id/textViewPlayerBirthday"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView"/>


             ***** mehrere Textviews *****


        </LinearLayout>
 
Zuletzt bearbeitet:
Für API > 10 kannst du dem container layout ein

animateLayoutChanges="true"

verpassen. Dann schiebt er dir die views nach unten.
Das geht auch über LayoutTransition im Code, falls du die Dauer etc. verändern willst.
Mit nineOldAndroids kannst das auch für API < 11 haben.

Falls du custom animation nutzen willst, musst du das halt selbst schreiben. Die Höhe der ImageView greifst dabei über nen LayoutChangeListener ab, dann kannste die restlichen views entsprechend animieren.
 
  • Danke
Reaktionen: erli2909
Vielen Dank, nach genau so einer 1-Zeilen-Lösung hab ich gesucht!
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.552
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.986
OnkelLon
OnkelLon
S
Antworten
9
Aufrufe
1.212
swa00
swa00
Zurück
Oben Unten