当前位置: 首页 > 知识库问答 >
问题:

如何在像Google plus/Google报摊这样的滚动上对回收器视图进行动画处理?

姜业
2023-03-14

当项目第一次出现以及用户滚动时,我如何设置<code>RecyclerView

我还在某处读到RecyclView在用户滚动时不直接支持动画;如果这是真的,我们还有什么办法可以做到吗?

共有3个答案

萧琛
2023-03-14

对于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>
郎曾笑
2023-03-14

https://github.com/wasabeef/recyclerview-animators

在我的代码中是这样的:

import jp.wasabeef.recyclerview.animators.adapters.AlphaInAnimationAdapter;

....

public function populate() {
   // Get your recicleview
   rv = (RecyclerView)findViewById(R.id.rv);
   rv.setHasFixedSize(true);

   // Populate your cursor with your own method...
   Cursor myRecycleItems= null;
   myRecycleItems= mDbHelper.getItems();

   //create your 
   itemsAdapter= new ItemsAdapter(myRecycleItems, getApplicationContext());


   //Finnaly apply your adapter to RV with AlphaInAnimationAdapter:
   rv.setAdapter(new AlphaInAnimationAdapter(itemsAdapter));

}

您需要向您的gradle添加依赖项

dependencies {
  // jCenter
  ...... 
  your curent dependencies 
  ....
  compile 'jp.wasabeef:recyclerview-animators:2.0.0'
}

阅读文档https://github.com/wasabeef/recyclerview-animators安装它。

施自珍
2023-03-14

我这样做了。可能会帮助某人。我不知道这是否是最好的方法,但对我来说很好。

更新:要修复快速滚动行为,请覆盖适配器的onviewsdetachedFromWindow方法,并在动画视图上调用clearAnimation(在本例中,为holder.itemView.clearAnimation())。这样地:

 @Override
public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
    super.onViewDetachedFromWindow(holder);
    holder.itemView.clearAnimation();
}

< code>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>

最后把这个代码放在回收商View的BindViewHolder上创建一个名为 lastPosition 的字段,并将其初始化为 -1。

Animation animation = AnimationUtils.loadAnimation(context,
            (position > lastPosition) ? R.anim.up_from_bottom
                    : R.anim.down_from_top);
    holder.itemView.startAnimation(animation);
    lastPosition = position;
 类似资料:
  • 我想这样做:https://storage.googleapis.com/spec-host/mio-staging/mio-design/1563837804615/assets/1XlKhaQFU9aS84ACmF-EDjVKDgI4pPldv/02-overflowmenu.mp4 我想挤压一个“ViewGroup”,正如你在视频中看到的。与此同时,我想淡出ViewGroup中的内容在其原始

  • 这是我的适配器 我想每次滚动一个项目。比如你在Instagram上看到多张照片。我怎么能那样做? 谢谢 和我的XML;

  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 我在Scrollview中有Recyclerview 现在,滚动时,layoutStaticContent保持固定在顶部

  • 我正在将Recyclerview与CardView一起使用我知道如何在列表视图上控制速度。但对于RecyclerView不是。 更新: 我用这个总结了吉尔的回答

  • 我试图允许刷卡以删除回收器视图中的项目,但由于某些原因,它并不总是玩得很好,显示的是空白而不是纸牌。 我已经制作了抛出和移动项目的代码句柄,以触发滑动动画,当滑动动画结束时,项目将从数据集中删除并通知适配器。 可能是因为我是RecyclerView新手,但是找不到缺少的东西。 我做了什么错在哪里?为什么它有时工作得很好,有时却不起作用? 有没有更好的解决方案来处理滑动到移除的处理?