先上效果图
先在module的build.gradle文件中,添加依赖
implementation 'com.chenlittleping:recyclercoverflow:1.0.6'
在XML文件中的控件
<recycler.coverflow.RecyclerCoverFlow
android:id="@+id/send_recy"
android:layout_width="match_parent"
android:layout_height="300dp"></recycler.coverflow.RecyclerCoverFlow>
在Activity中的代码
public class MainActivity extends AppCompatActivity {
//控件,适配器,使用本地的图片
private RecyclerCoverFlow send_recy;
private LoopAdapter loopAdapter;
private int imgs[] = {R.mipmap.a, R.mipmap.c, R.mipmap.d, R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d, R.mipmap.a, R.mipmap.c};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
//适配器
loopAdapter = new LoopAdapter(this, imgs);
send_recy.setAdapter(loopAdapter);
//让轮播图显示中间的图片
send_recy.smoothScrollToPosition(imgs.length / 2);
//自定义接口回调,点击图片使它展示到中间
loopAdapter.setOnItemClick(new LoopAdapter.OnItemClick() {
@Override
public void onItemClick(View view, int position) {
send_recy.smoothScrollToPosition(position);
}
});
}
private void initView() {
send_recy = (RecyclerCoverFlow) findViewById(R.id.send_recy);
}
}
适配器
public class LoopAdapter extends RecyclerView.Adapter<LoopAdapter.ViewHolder> implements View.OnClickListener {
private Context mContext;
private int img[];
public LoopAdapter(Context mContext, int[] img) {
this.mContext = mContext;
this.img = img;
}
@Override
public LoopAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(mContext, R.layout.loop_movie, null);
ViewHolder viewholer = new ViewHolder(view);
view.setOnClickListener(this);
return viewholer;
}
@Override
public void onBindViewHolder(LoopAdapter.ViewHolder holder, int position) {
holder.itemView.setTag(position);
Glide.with(mContext).load(img[position]).into(holder.simpleDraweeView);
}
@Override
public void onClick(View view) {
if(onItemClick!=null){
onItemClick.onItemClick(view,(int)view.getTag());
}
}
public interface OnItemClick{
void onItemClick(View view,int position);
}
private OnItemClick onItemClick;
public void setOnItemClick(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
@Override
public int getItemCount() {
return img.length;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView simpleDraweeView;
public ViewHolder(View itemView) {
super(itemView);
simpleDraweeView=itemView.findViewById(R.id.simp_cinema_flow);
}
}
}
子item里的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/simp_cinema_flow"
android:layout_width="300dp"
android:layout_height="200dp" />
</LinearLayout>
//在写适配器的过程中,你也可能发现了,我们并没有导入RecyclerView的依赖,但我们却可以直接使用,所以当我们导入RecyclerCoverFlow依赖后就可以用RecyclerView了,不用再导入RecyclerView的依赖了。