如何实现google + listview动画

时间:2013-05-31 02:17:26

标签: android android-animation

我希望实现像google + listview这样的动画体验。当用户滑动列表视图时,列表视图中首次加载的每个项目都将启动动画。我尝试在getview方法中添加动画来为每个项目设置动画,但我想要确认这种方式是否是一种好的方法,我是否需要扩展listview类来完成这个?所以请给我一些建议或一些像google + listview的例子。谢谢你们。)

2 个答案:

答案 0 :(得分:15)

您不需要扩展ListView类。

这是一个实现Google plus类似ListView动画的Android库。

GenericBaseAdapter.java

GPlusListAdapter.java

MainActivity.java

它的工作方式是,在适配器的getView方法中,如果它是新加载的,它会为视图设置动画。
(因此,它扩展了适配器,而不是ListView,以制作动画。)< / p>

您还可以在sugared-list-animations-sample

的链接中下载示例应用的apk

答案 1 :(得分:2)

Google Plus风格ListViews在Android上风靡一时,因为它在呈现数据时显示的光滑动画。当用户向下滚动时,新项目会动画到视图中,坦率地说它看起来很棒      的 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>

从顶部下来     的 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>

在列表适配器类

     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;
    }

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

复制