7

我想实现像 google+ listview 这样的动画体验。当用户滑动 listview 时,首先加载到 listview 中的每个项目都会启动一个动画。我尝试在 getview 方法中添加动画来为每个项目设置动画,但我想确认这是否way 是一个好方法,我需要扩展 listview 类来完成这个吗?所以请给我一些建议或一些像 google+ listview 一样的例子。非常感谢:)

4

2 回答 2

15

您不需要扩展 ListView 类。

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

GenericBaseAdapter.java

GPlusListAdapter.java

MainActivity.java

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

您还可以在sugared-list-animations-sample的链接中下载示例应用的apk

于 2013-05-31T02:26:03.037 回答
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复制

于 2015-09-02T11:13:30.060 回答