仿朋友圈效果

1:适配器布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/shapelogin"
        android:padding="@dimen/dp_10"
        android:layout_marginBottom="@dimen/dp_20"
        android:orientation="vertical">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/fragment_circle_sdv_image"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                fresco:roundWithOverlayColor="@android:color/white"
                fresco:roundedCornerRadius="8dp" />
            <TextView
                android:id="@+id/fragment_circle_txt_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:layout_centerVertical="true"
                android:layout_toRightOf="@+id/fragment_circle_sdv_image"
                android:layout_marginLeft="15dp" />
            <TextView
                android:id="@+id/fragment_circle_txt_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:layout_marginRight="10dp"/>
        </RelativeLayout>

        <TextView
            android:id="@+id/fragment_circle_txt_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:ellipsize="end"
            android:gravity="center"
            android:maxLines="1"
            android:textSize="12sp" />

        <com.bwie.baweishop.utils.recyclerview.RecyclerGridView
            android:id="@+id/grid_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </com.bwie.baweishop.utils.recyclerview.RecyclerGridView>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_30"
            android:gravity="right"
            android:layout_marginTop="@dimen/dp_20"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/fragment_circle_txt_zan"
                android:layout_width="@dimen/dp_20"
                android:layout_height="@dimen/dp_20"
                android:background="@drawable/zan"/>
            <TextView
                android:id="@+id/fragment_circle_txt_zannum"
                android:layout_width="@dimen/dp_30"
                android:layout_height="match_parent"
                android:gravity="center"
                android:textSize="12sp"
                android:layout_marginLeft="@dimen/dp_10"/>
        </LinearLayout>
    </LinearLayout>



</LinearLayout>

2:适配器


public class Fragment_Circle_Adapter extends RecyclerView.Adapter<Fragment_Circle_Adapter.ViewHolder> {
    public static final String FORMAT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    private Context context;
    private List<Circle> list;

    public Fragment_Circle_Adapter(Context context) {
        this.context = context;
        list = new ArrayList<>();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.fragment_circle_recy, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
        Uri uri = Uri.parse(list.get(position).getHeadPic());
        holder.fragmentCircleSdvImage.setImageURI(uri);
        holder.fragmentCircleTxtName.setText(list.get(position).getNickName());
        //转换成日期格式
        SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT_DATE_TIME_PATTERN,Locale.getDefault());
        holder.fragmentCircleTxtDate.setText(dateFormat.format(list.get(position).getCreateTime()));
        holder.fragmentCircleTxtContent.setText(list.get(position).getContent());
        holder.fragmentCircleTxtZanNum.setText(""+list.get(position).getGreatNum());
        holder.fragmentCircleTxtZan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Animation animation = AnimationUtils.loadAnimation(context, R.anim.add_score_anim);
                holder.fragmentCircleTxtZanNum.setVisibility(View.VISIBLE);
                holder.fragmentCircleTxtZanNum.startAnimation(animation);
                holder.fragmentCircleTxtZan.setBackgroundResource(R.drawable.zans);
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        holder.fragmentCircleTxtZanNum.setVisibility(View.GONE);
                    }
                }, 1000);
            }
        });

        if (StringUtils.isEmpty(list.get(position).getImage())){
            holder.gridView.setVisibility(View.GONE);
        }else{
            holder.gridView.setVisibility(View.VISIBLE);
            String[] images = list.get(position).getImage().split(",");
            int colNum;//列数
            if (images.length == 1){
                colNum = 1;
            }else if (images.length == 2||images.length == 4){
                colNum = 2;
            }else {
                colNum = 3;
            }
            holder.gridView.setNumColumns(colNum);
            holder.imageAdapter.clear();
            holder.imageAdapter.addAll(Arrays.asList(images));
            holder.imageAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public void addAll(List<Circle> result) {
        if (result !=null){
            list.addAll(result);
        }
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final SimpleDraweeView fragmentCircleSdvImage;
        private final TextView fragmentCircleTxtName;
        private final TextView fragmentCircleTxtDate;
        private final TextView fragmentCircleTxtContent;
        private final ImageAdapter imageAdapter;
        private final RecyclerGridView gridView;
        private final TextView fragmentCircleTxtZan;
        private final TextView fragmentCircleTxtZanNum;

        public ViewHolder(View itemView) {
            super(itemView);
            fragmentCircleSdvImage = itemView.findViewById(R.id.fragment_circle_sdv_image);
            fragmentCircleTxtName = itemView.findViewById(R.id.fragment_circle_txt_name);
            fragmentCircleTxtDate = itemView.findViewById(R.id.fragment_circle_txt_date);
            fragmentCircleTxtContent = itemView.findViewById(R.id.fragment_circle_txt_content);
            fragmentCircleTxtZan = itemView.findViewById(R.id.fragment_circle_txt_zan);
            fragmentCircleTxtZanNum = itemView.findViewById(R.id.fragment_circle_txt_zannum);
            gridView = itemView.findViewById(R.id.grid_view);
            imageAdapter = new ImageAdapter();
            int space = context.getResources().getDimensionPixelSize(R.dimen.dp_10);;//图片间距
            gridView.setHorizontalSpacing(space);
            gridView.setVerticalSpacing(space);
            gridView.setAdapter(imageAdapter);
        }
    }
}

3:ImageAdapter布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/circle_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        />
</LinearLayout>

4:ImageAdapter代码


public class ImageAdapter extends BaseAdapter {

    private List<String> mList = new ArrayList<>();

    public void addAll(List<String> list){
        mList.addAll(list);
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MyHodler myHodler ;
        if (convertView==null){
            convertView = View.inflate(parent.getContext(), R.layout.circle_image_item,null);
            myHodler = new MyHodler();
            myHodler.image = convertView.findViewById(R.id.circle_image);
            convertView.setTag(myHodler);
        }
        myHodler = (MyHodler) convertView.getTag();
        myHodler.image.setImageURI(Uri.parse(mList.get(position)));
        return convertView;
    }

    public void clear() {
        mList.clear();
    }

    class MyHodler {
        SimpleDraweeView image;
    }
}

猜你喜欢

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