添加图片效果图:
Android 九宫格图片展示的实现_第1张图片
添加满 9 张图片效果图:
Android 九宫格图片展示的实现_第2张图片

添加文件相关文章:《图片操作框架 TakePhoto 的引入》

长按删除图片效果图:
Android 九宫格图片展示的实现_第3张图片

删除弹窗相关文章:《常用代码整理:Android 常用弹窗整理》

采用 RecyclerView.Adapter 实现九宫格:

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder> {    private List<String> mData;    private final int mCountLimit = 9;    private OnItemClickListener mOnItemClickListener;    public interface OnItemClickListener {        void onTakePhotoClick();        void onItemLongClick(View view, int position);    }    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {        this.mOnItemClickListener = onItemClickListener;    }    public ImageAdapter(List<String> data) {        this.mData = data;    }    @NonNull    @Override    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        ImageView imageView = new ImageView(parent.getContext());        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(SizeUtil.dip2px(parent.getContext(), 95), SizeUtil.dip2px(parent.getContext(), 95));        params.setMargins(10, 10, 10, 10);        params.gravity = Gravity.CENTER;        imageView.setLayoutParams(params);        return new MyViewHolder(imageView);    }    @Override    public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {        if (position == getItemCount() - 1 && mData.size() < mCountLimit) {            holder.imageView.setImageResource(R.mipmap.detal_icon_add);            holder.imageView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    mOnItemClickListener.onTakePhotoClick();                }            });        } else {            // 本地图片            Glide.with(BaseApplication.getInstance().getApplicationContext()).load(new File(mData.get(position))).into(holder.imageView);            // 网络图片            // Glide.with(BaseApplication.getInstance().getApplicationContext()).load(mData.get(position)).into(holder.imageView);            holder.imageView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    // 点击操作,后续可添加点击后的响应                }            });            // 长按监听            holder.imageView.setOnLongClickListener(new View.OnLongClickListener() {                @Override                public boolean onLongClick(View v) {                    mOnItemClickListener.onItemLongClick(v, position);                    return true;                }            });        }    }    @Override    public int getItemCount() {        // 满 9张图就不让其添加新图        if (mData != null && mData.size() >= mCountLimit) {            return mCountLimit;        } else {            return mData == null ? 1 : mData.size() + 1;        }    }    class MyViewHolder extends RecyclerView.ViewHolder {        private ImageView imageView;        private MyViewHolder(View itemView) {            super(itemView);            imageView = (ImageView) itemView;        }    }}

调用代码:

mRlvImage.setLayoutManager(new GridLayoutManager(DetailActivity.this, 3));mImageAdapter = new ImageAdapter(mSDImageList);mImageAdapter.setOnItemClickListener(new ImageAdapter.OnItemClickListener() {    @Override    public void onTakePhotoClick() {        showImageDialog();    }    @Override    public void onItemLongClick(View view, int position) {        showDeletePop(view, position);    }});mRlvImage.setAdapter(mImageAdapter);
// 添加图片mSDImageList.add(imageUri);mImageAdapter.notifyDataSetChanged();// 长按删除mSDImageList.remove(position);mImageAdapter.notifyDataSetChanged();

更多相关文章

  1. 在Android中使用GIF图片
  2. android 读取本地超大图片
  3. Android 图片加水印
  4. Android数据库操作查询中Cursor类的问题
  5. Android gallery实现图片的左右循环旋转源码分享
  6. 通过 http post 方式上传多张图片
  7. Android 上传图片到服务器(多文件上传)

随机推荐

  1. 盒模型和定位
  2. 0323作业
  3. markdown语法和Emmet插件的使用
  4. 10.66G的Spring Boot 2.0深度实践之核心
  5. 2021-03-24:给定一个整数组成的无序数组ar
  6. synchronized 是可重入锁吗?为什么?
  7. 一文看懂 java 10 中 var 关键字(类型推
  8. oracle-xe centos7安装配置
  9. 图书管理系统设计与实现(毕业设计)
  10. 详解高并发的解决思路与手段!