the library is a loop RecyclerView, can show some effects when display

Min SDK   13
Latest Commit   2017-08-16 15:05:45
License   

Github   https://github.com/kHRYSTAL/CircleRecyclerView

         

使用APP客户端扫描二维码运行Demo


...

kHRYSTAL
Entrepreneurial Failure
Beijing, China

http://baladuu.com/
first to learn second to cope

         

类似的还有....
IndexRecyclerView a Contact list implements by RecyclerView
Smart-HeaderFooter-RecyclerView Easy implements Header & Footer view, Support LinerLayoutManager、GridLayoutManager、StaggeredLayoutManager, With least modify!
android-data-binding-recyclerview Using Recyclerview with the new Android Data Binding framework
README

README.md

CircleRecyclerView

the library is a loop RecyclerView, can show some effects when display

screenshot

CircularViewMode

CircularViewMode

ScaleXViewMode & ScaleYViewMode

ScaleXYViewMode

RotateXScaleYViewMode & RotateYScaleXViewMode

RotateXYScaleXYViewMode

NoLoop but CenterForce (setClipPadding(l,t,r,b); setClipChildren(false);)

CircularHorizontalMode

CircularHorizontalMode

usage


mCircleRecyclerView = (CircleRecyclerView) view.findViewById(R.id.circle_rv);
mCircleRecyclerView.setLayoutManager(mLayoutManager);
mCircleRecyclerView.setViewMode(mItemViewMode); // T implements ItemViewMode, after setLayoutManager(manager)
mCircleRecyclerView.setNeedCenterForce(true); // when SCROLL_STATE_IDLE == state, nearly center itemview scroll to center

mCircleRecyclerView.setNeedLoop(true); // default is true

// if setCenterForce(true), can set this callback
mCircleRecyclerView.setOnCenterItemClickListener(new CircleRecyclerView.OnCenterItemClickListener() {
    @Override
    public void onCenterItemClick(View v) {
        Toast.makeText(getContext(), "Center Clicked", Toast.LENGTH_SHORT).show();
    }
});

and if loop is true, the RecyclerView.Adapter need like this:

@Override
public void onBindViewHolder(VH holder, int position) {
    positionData = mDataList.get(position % mDataList.size());
}

@Override
public int getItemCount() {
    return Integer.MAX_VALUE;
}