T_C*_*T_C 34 android scroll android-animation android-recyclerview
我如何设置RecyclerView第一次显示项目的时间以及用户滚动时的动画,就像它对google plus应用程序或google新闻站点应用程序的工作方式一样.
我还读到RecyclerView了用户滚动时不直接支持动画的地方; 如果这是真的,我们还有什么方法可以做到吗?
Vin*_*kar 78
我是这样做的.可以帮助别人.我不知道这是否是最好的方式,但对我来说效果很好.
更新:
要修复快速滚动行为,请覆盖onViewDetachedFromWindow适配器的方法并调用clearAnimation动画视图(在本例中holder.itemView.clearAnimation()).类似于:
@Override
public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
holder.itemView.clearAnimation();
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
最后把这段代码放进去onBindViewHolder了recyclerView.创建一个名为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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34868 次 |
| 最近记录: |