我想实现像 google+ listview 这样的动画体验。当用户滑动 listview 时,首先加载到 listview 中的每个项目都会启动一个动画。我尝试在 getview 方法中添加动画来为每个项目设置动画,但我想确认这是否way 是一个好方法,我需要扩展 listview 类来完成这个吗?所以请给我一些建议或一些像 google+ listview 一样的例子。非常感谢:)
问问题
9859 次
2 回答
15
您不需要扩展 ListView 类。
这是一个实现类似 Google plus 的 ListView 动画的 Android 库。
它的工作方式是,在适配器的getView
方法中,如果视图是新加载的,它会为视图设置动画。
(因此,它扩展了 Adapter 而不是 ListView 来制作动画。)
于 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 回答