UltimateRecyclerView
介绍:
UltimateRecyclerView 是一个实现了滑动刷新,上拉加载,滑动删除,拖动排序,滚动显示与隐藏toolbar等效果的RecyclerView控件。
运行效果:
使用说明:
<com.marshalchen.ultimaterecyclerview.UltimateRecyclerView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ultimate_recycler_view"
app:recyclerviewClipToPadding="true"
app:recyclerviewPadding="2dp">
</com.marshalchen.ultimaterecyclerview.UltimateRecyclerView>
加载更多
ultimateRecyclerView.enableLoadmore();
设置ParallaxHeader
ultimateRecyclerView.setParallaxHeader(getLayoutInflater().inflate(R.layout.parallax_recyclerview_header, ultimateRecyclerView.mRecyclerView, false));
ultimateRecyclerView.setOnParallaxScroll(new UltimateRecyclerView.OnParallaxScroll() {
@Override
public void onParallaxScroll(float percentage, float offset, View parallax) {
Drawable c = toolbar.getBackground();
c.setAlpha(Math.round(127 + percentage * 128));
toolbar.setBackgroundDrawable(c);
}
});
设置滑动刷新
ultimateRecyclerView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
simpleRecyclerViewAdapter.insert("Refresh things", 0);
ultimateRecyclerView.setRefreshing(false);
// ultimateRecyclerView.scrollBy(0, -50);
linearLayoutManager.scrollToPosition(0);
}
}, 1000);
}
});
滑动删除
ultimateRecyclerView.setSwipeToDismissCallback(new SwipeToDismissTouchListener.DismissCallbacks() {
@Override
public SwipeToDismissTouchListener.SwipeDirection dismissDirection(int position) {
return SwipeToDismissTouchListener.SwipeDirection.BOTH;
}
@Override
public void onDismiss(RecyclerView view, List<SwipeToDismissTouchListener.PendingDismissData> dismissData) {
for (SwipeToDismissTouchListener.PendingDismissData data : dismissData) {
simpleRecyclerViewAdapter.remove(data.position);
}
}
@Override
public void onResetMotion() {
isDrag = true;
}
@Override
public void onTouchDown() {
isDrag = false;
}
});
拖动排序
dragDropTouchListener = new DragDropTouchListener(ultimateRecyclerView.mRecyclerView, this) {
@Override
protected void onItemSwitch(RecyclerView recyclerView, int from, int to) {
simpleRecyclerViewAdapter.swapPositions(from, to);
simpleRecyclerViewAdapter.clearSelection(from);
simpleRecyclerViewAdapter.notifyItemChanged(to);
if (actionMode != null) actionMode.finish();
Logs.d("switch----");
}
@Override
protected void onItemDrop(RecyclerView recyclerView, int position) {
Logs.d("drop----");
ultimateRecyclerView.enableSwipeRefresh(true);
}
};
dragDropTouchListener.setCustomDragHighlight(getResources().getDrawable(R.drawable.custom_drag_frame));
ultimateRecyclerView.mRecyclerView.addOnItemTouchListener(dragDropTouchListener);
动画效果
ultimateRecyclerView.setItemAnimator(Type.values()\[position\].getAnimator());
ultimateRecyclerView.getItemAnimator().setAddDuration(300);
ultimateRecyclerView.getItemAnimator().setRemoveDuration(300);
toolbar与浮动操作按钮的显示与隐藏
ultimateRecyclerView.setScrollViewCallbacks(new ObservableScrollViewCallbacks() {
@Override
public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {
}
@Override
public void onDownMotionEvent() {
}
@Override
public void onUpOrCancelMotionEvent(ObservableScrollState observableScrollState) {
if (observableScrollState == ObservableScrollState.DOWN) {
ultimateRecyclerView.showToolbar(toolbar, ultimateRecyclerView,getScreenHeight());
} else if (observableScrollState == ObservableScrollState.UP) {
ultimateRecyclerView.hideToolbar(toolbar,ultimateRecyclerView,getScreenHeight());
} else if (observableScrollState == ObservableScrollState.STOP) {
}
}
});
已下载
0