我想对RecyclerView
使用反弹效果。每当我过度滚动内容时弹跳效果......
是否存在库或示例?
答案 0 :(得分:12)
我也找不到任何支持RecyclerView反弹效果的库。最终我自己最终实现了一个新的库。看看我的图书馆overscroll-bouncy-android。 。它目前支持使用LinearLayoutManager的RecyclerView。我也在使用ListView和ScrollView。
使用我的库:
第1步:
dependencies {
compile 'com.chauthai.overscroll:overscroll-bouncy:0.1.0'
}
第2步:
<com.chauthai.overscroll.RecyclerViewBouncy
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
答案 1 :(得分:5)
使用动态动画可以轻松完成此操作,而无需使用任何第三方库。
我写了一篇有关here的文章。
另一个优势是,它可以与任何类型的布局管理器一起使用,并且由于我们使用的是基于物理的动态动画,因此动画的感觉更加强烈。自然。
答案 2 :(得分:4)
您可以使用此库https://github.com/EverythingMe/overscroll-decor 因此,您需要像这样创建自己的ScrollDecorAdapter
public class CustomRecyclerViewOverScrollDecorAdapter extends RecyclerViewOverScrollDecorAdapter {
RecyclerView mRecyclerView;
public CustomRecyclerViewOverScrollDecorAdapter(RecyclerView recyclerView) {
super(recyclerView);
mRecyclerView = recyclerView;
}
@Override
public boolean isInAbsoluteEnd() {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
if (linearLayoutManager.getOrientation() == LinearLayoutManager.HORIZONTAL) {
return !mRecyclerView.canScrollHorizontally(1);
} else {
return !mRecyclerView.canScrollVertically(1);
}
}
}
现在在您的片段/活动中使用
CustomVerticalOverScrollDecorator overScrollDecorator =
new CustomVerticalOverScrollDecorator(new CustomRecyclerViewOverScrollDecorAdapter(yourRecyclerView));
CustomVerticalOverScrollDecorator就像这样
public class CustomVerticalOverScrollDecorator extends VerticalOverScrollBounceEffectDecorator {
public CustomVerticalOverScrollDecorator(IOverScrollDecoratorAdapter viewAdapter) {
this(viewAdapter, DEFAULT_TOUCH_DRAG_MOVE_RATIO_FWD, DEFAULT_TOUCH_DRAG_MOVE_RATIO_BCK, DEFAULT_DECELERATE_FACTOR);
}
public CustomVerticalOverScrollDecorator(IOverScrollDecoratorAdapter viewAdapter, float touchDragRatioFwd, float touchDragRatioBck, float decelerateFactor) {
super(viewAdapter, touchDragRatioFwd, touchDragRatioBck, decelerateFactor);
// Some setup on the view itself.
}
}
答案 3 :(得分:0)
你可以试试我的图书馆https://github.com/Valkriaine/Bouncy。
同时支持recyclerview和nestedscrollview。
在您的应用模块 build.gradle 中:
dependencies {
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.factor:bouncy:1.8'
}
并将其用作普通的回收器视图。
<com.factor.bouncy.BouncyRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:recyclerview_fling_animation_size=".7"
app:recyclerview_overscroll_animation_size=".7"
app:recyclerview_damping_ratio="DAMPING_RATIO_LOW_BOUNCY"
app:recyclerview_stiffness="STIFFNESS_MEDIUM"
app:allow_drag_reorder="true"
app:allow_item_swipe="false"/>
设置适配器和布局管理器。在技术上支持任何布局管理器:
recycler_view.setAdapter(myAdapter);
recycler_view.setLayoutManager(new LinearLayoutManager(context));
//recycler_view.setLayoutManager(new GridLayoutManager(context, 3));
水平过度滚动:
recycler_view.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
如果弹跳动画方向错误(例如水平弹跳而垂直布局)您也可以手动设置动画方向:
recycler_view.setOrientation(LinearLayoutManager.VERTICAL);