2010-12-27 10 views
16

Ich versuche, meine Kind Ansichten in einer erweiterbaren Listview zu animieren. Ich möchte, dass die Kindansicht beim Erweitern einer Gruppe von oben nach unten gleitet und beim Zusammenklappen einer Gruppe von unten nach oben gleitet. Ich habe mir verschiedene Methoden angesehen (Animieren der Ansichtsgruppe oder der Kindansichten), aber keine scheint sehr gut zu funktionieren oder ich mache es nicht richtig.Animieren der Childs einer erweiterbaren Listview beim Minimieren/Erweitern

Ich habe eine Klasse von BaseExpandableListAdapter erweitert, um meinen eigenen benutzerdefinierten Adapter zu erstellen. Ich habe auch benutzerdefinierte (xml) Ansichten für die Gruppen/Kinder, die ich in den getChildView und getGroupView Methoden aufblasen.

Ich möchte nur die aktuelle kollabierte/erweiterte Gruppe animieren, es ist Kind. Kann mir jemand in die richtige Richtung zeigen? Wenn Sie weitere Informationen oder Code benötigen, lassen Sie es mich wissen!

Grüße, Ivo

+0

Sie eine Lösung für diese aufmerksam geworden? Vielen Dank. – user430926

+0

Ich finde auch die Lösung.Bitte helfen – anshul

+0

Haben Sie irgendeine funktionierende Lösung? –

Antwort

2

Sie können Animation für jedes Kind Blick in die Methode bindChildView hinzufügen. Um nur die untergeordnete Gruppe der aktuellen Gruppe zu animieren - fangen Sie einfach das Ereignis onExpand ab, lesen Sie die untergeordneten Elemente, speichern Sie die IDs in einigen Arrays und in der bindChildView - animieren Sie nur die in diesem Array gespeicherten untergeordneten Elemente.

+3

Können Sie mehr spezisch sein? Oder haben Sie einen Beispielcode? Vielen Dank. – user430926

+0

Ich werde erarbeiten: Auf der BindChildView haben Sie Zugriff auf das Kind View-Objekt. Sie können startAnimation verwenden, um eine Animation auf das Objekt anzuwenden. Sie können jedem einen Offset zuweisen, um die Animation schrittweise zu gestalten. – Udinic

5

Also was ich getan habe, ist eine regelmäßige Listview zu verwenden und dann animieren die Zeilenansichten, wenn Sie darauf klicken.

Ich benutze diese Methode für Animation: Android animate drop down/up view proper

Es kann ein bisschen schwierig sein, wenn die Höhe der Ansicht fallen gelassen werden herunter wrap_content, für dieses Problem, das ich finden musste und die Höhe einstellen, bevor ich den Start Animation:

public static void setHeightForWrapContent(Activity activity, View view) { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    int screenWidth = metrics.widthPixels; 

    int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); 
    int widthMeasureSpec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY); 

    view.measure(widthMeasureSpec, heightMeasureSpec); 
    int height = view.getMeasuredHeight(); 
    view.getLayoutParams().height = height; 
} 

Die Ansicht sollte vor dem Start der Animation gelöscht und dann beim Start der Animation sichtbar gemacht werden.

Edit: Ich machte ein komplettes Beispiel here.

2

Eine andere Lösung ist die Android-SlideExpandableListView Bibliothek verwenden schrieb ich: https://github.com/tjerkw/Android-SlideExpandableListView

es auf Ideen von Udinic und andere aufbaut.

Mehr dazu finden Sie in diesem Blog-Eintrag zu lesen: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/

+0

Wäre nett, wenn Sie Ihre Antwort mit einer Erklärung dessen ausfüllen könnten, was am anderen Ende dieser Links ist. Link-Only-Antworten neigen dazu, zu verrotten. Vielen Dank. – Kev

+0

Fantastische Arbeit TjerkW! – Slickelito

Verwandte Themen