先上效果图
Android 旋转木马轮播图

先在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的依赖了。

相关文章:

  • 2021-12-15
  • 2021-11-27
  • 2021-11-27
  • 2021-11-27
  • 2021-11-26
  • 2021-11-27
  • 2021-11-27
  • 2021-09-25
猜你喜欢
  • 2021-06-28
  • 2021-11-22
  • 2021-09-25
  • 2021-10-06
  • 2021-12-05
  • 2021-12-05
  • 2021-12-05
相关资源
相似解决方案