2013-05-31 7 views
7

Chcę zaimplementować animację, taką jak google + listview. Gdy użytkownik przesunie widok listy, każdy element, który pierwszy załadował listę, uruchomi animację. Próbuję dodać animację w metodzie getview do animacji każdego ale chcę potwierdzić, czy jest to dobra metoda i czy muszę rozszerzyć klasę listview, aby to zakończyć? Więc proszę, daj mi kilka rad lub kilka przykładów, które przypominają google + listview. Bardzo dziękuję :)Jak zaimplementować animację Google Listview

Odpowiedz

15

You nie trzeba rozszerzać klasy ListView.

Oto biblioteka Androida, która zaimplementowała podobną do Google animację ListView.

GenericBaseAdapter.java

GPlusListAdapter.java

MainActivity.java

Jak to działa jest w getView metody adaptera, to ożywia widok jeśli jest nowo załadowany.
(Tak, to rozszerzony adapter, nie ListView, aby animację.)

Można również pobrać aplikację próbce za apk w link sugared-list-animations-sample

+0

fajnie, bardzo dziękuję :) – CrystalJake

+0

bardzo piękna :) Wielkie dzięki – nguoitotkhomaisao

2

Google Plus ListViews styl są wszystkie wściekłość te dni na Androida ze względu na zręczne animacje wyświetlane podczas prezentacji danych. Gdy użytkownik przewija w dół, nowe elementy animować się w polu widzenia, i szczerze mówiąc wygląda niesamowite up_from_bottom.xml

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shareInterpolator="@android:anim/decelerate_interpolator"> 
    <translate 
    android:fromXDelta="0%" android:toXDelta="0%" 
    android:fromYDelta="100%" android:toYDelta="0%" 
    android:duration="400" /> 
    </set> 

dół od góry down_from_top.xml

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shareInterpolator="@android:anim/decelerate_interpolator"> 
    <translate 
    android:fromXDelta="0%" android:toXDelta="0%" 
    android:fromYDelta="-100%" android:toYDelta="0%" 
    android:duration="400" /> 
    </set> 

w twojej lista adaptera klasa

 private int lastPosition = -1; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
//Load your view, populate it, etc... 
     View view = ...; 

    Animation animation = AnimationUtils.loadAnimation(getContext(), (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top); 
    view.startAnimation(animation); 
    lastPosition = position; 

    return view; 
    } 

skopiowany z http://kylewbanks.com/blog/Implementing-Google-Plus-Style-ListView-Animations-on-Android

+0

To będzie stosowane przy każdym przewijaniu, nie tylko do nowych elementów w widoku listy, takich jak Google+ – SpyZip