android recyclerview实现头像堆叠效果

在这里插入图片描述

1:依赖

implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'

2:布局不用写了直接功能代码

public class MainActivity extends AppCompatActivity {
    private List<String> images = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        images.add("https://m.zhaokaobao.com.cn/uploads/202007/fd4222c22333217927dfc9c68146f0f0.jpg");
        images.add("https://m.zhaokaobao.com.cn/uploads/202007/ce07d7461bf4c33e795c46f2e51b76fc.jpg");
        images.add("https://m.zhaokaobao.com.cn/uploads/202007/ce07d7461bf4c33e795c46f2e51b76fc.jpg");
        images.add("https://m.zhaokaobao.com.cn/uploads/202007/ce07d7461bf4c33e795c46f2e51b76fc.jpg");
        images.add("https://m.zhaokaobao.com.cn/uploads/202007/ce07d7461bf4c33e795c46f2e51b76fc.jpg");
        RecyclerView mSameitempersion = findViewById(R.id.same_item_persion);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);//这里的true和false控制堆叠的方向,我的效果右侧堆叠所以是false
        linearLayoutManager.setStackFromEnd(true);
        mSameitempersion.setLayoutManager(linearLayoutManager);
        SameItemImageAdapter imageAdapter = new SameItemImageAdapter(MainActivity.this, images);
        mSameitempersion.setAdapter(imageAdapter);
    }
}

适配器

public class SameItemImageAdapter extends RecyclerView.Adapter<SameItemImageAdapter.ViewHolder> {
    private Activity mActivity;
    private List<String> list;
    public SameItemImageAdapter(Activity activity, List<String> list) {
        this.mActivity = activity;
        this.list = list;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        ViewHolder holder = new ViewHolder(LayoutInflater.from(mActivity).inflate(R.layout.same_image, viewGroup, false));
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        Glide.with(mActivity).load(list.get(i)).placeholder(R.mipmap.repalec).diskCacheStrategy(DiskCacheStrategy.RESULT).skipMemoryCache(false).into(viewHolder.mLikehead);
        if(i==0){
            setMargins(viewHolder.mRelayout,0,0,0,0);
        }

    }
    public void setMargins (View v, int l, int t, int r, int b) {
        if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
            ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
            p.setMargins(l, t, r, b);
            v.requestLayout();
        }
    }
    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final ShapedImageView mLikehead;
        private final RelativeLayout mRelayout;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mRelayout = itemView.findViewById(R.id.relayout);
            mLikehead = itemView.findViewById(R.id.sameitem_head);
        }
    }
}

same_image实现 圆角图片请参照圆角图片实现

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/relayout"
    android:layout_marginRight="-10dp"//左侧堆叠或右侧堆叠的长度,左侧请换成margin_left
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <com.example.image.ShapedImageView
        android:id="@+id/sameitem_head"
        android:layout_centerVertical="true"
        android:scaleType="fitXY"
        android:layout_width="50dp"
        app:shape_mode="circle"
        android:layout_height="50dp"/>
</RelativeLayout>

猜你喜欢

转载自blog.csdn.net/weixin_43117800/article/details/107676301