Cha*_*han 6 android android-animation android-recyclerview
我必须通过在列表视图中展开和折叠动画来实现列表视图.我有一个方法使用这样做,但它不适用于RecyclerView视图.整个RecyclerView将在短时间内可见并且动画开始之后. 请参阅此链接中的GIF.
作为替代方案,我遵循这篇文章并添加和删除所有项目(它总是将少于5个项目,因此没有性能问题)使用已
LayoutAnimation实现的后续.
如您所见,列表视图项显示动画工作.隐藏项目反转动画文件中的属性,如下所示,并在删除所有数据后应用它RecyclerView
item_remove_animation_drop_down.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@integer/anim_duration_medium">
<translate
android:fromYDelta="0"
android:toYDelta="-20%"
android:interpolator="@android:anim/decelerate_interpolator" />
<alpha
android:fromAlpha="1"
android:toAlpha="0"
android:interpolator="@android:anim/decelerate_interpolator"
/>
<scale
android:fromXScale="100%"
android:fromYScale="100%"
android:toXScale="95%"
android:toYScale="95%"
android:pivotX="50%"
android:pivotY="50%"
android:interpolator="@android:anim/decelerate_interpolator" />
</set>
Run Code Online (Sandbox Code Playgroud)
layout_animation_fall_down.xml
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/item_add_animation_fall_down"
android:delay="15%"
android:animationOrder="normal" />
Run Code Online (Sandbox Code Playgroud)
适配器中的方法
public void runItemRemoveAnimation(final RecyclerView recyclerView) {
final LayoutAnimationController controller =
AnimationUtils.loadLayoutAnimation(context, R.anim.layout_animation_drop_down);
recyclerView.setLayoutAnimation(controller);
recyclerView.getAdapter().notifyDataSetChanged();
recyclerView.scheduleLayoutAnimation();
}
Run Code Online (Sandbox Code Playgroud)
片段中的代码
private void onClickSelectPromotionContainer() {
selectPromotionContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (discountListExpanded) {
promoListData.removeAll(promosDataFromServer);
discountListAdapter.runItemRemoveAnimation(discountRecyclerView);
selectPromotionImage.startAnimation(rotatePlus180);
discountListExpanded = false;
} else {
discountRecyclerView.setVisibility(View.VISIBLE);
promoListData.addAll(promosDataFromServer);
discountListAdapter.runItemAddAnimation(discountRecyclerView);
selectPromotionImage.startAnimation(rotateMinus180);
discountListExpanded = true;
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
但它没有创造任何动画.我认为因为它删除了我认为的所有数据.那么有什么方法可以在清除列表视图时添加漂亮的动画,可以用来说服用户列表隐藏?或者我在代码中做错了什么?它应该是添加动画的项目的反面,以保持它很好,应该是垂直动画.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |