1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android 九宫格图片展示的实现

Android 九宫格图片展示的实现

时间:2020-07-26 21:42:49

相关推荐

Android 九宫格图片展示的实现

添加图片效果图:

添加满 9 张图片效果图:

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

长按删除图片效果图:

删除弹窗相关文章:《常用代码整理: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@Overridepublic 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);}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onClick(View v) {// 点击操作,后续可添加点击后的响应}});// 长按监听holder.imageView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {mOnItemClickListener.onItemLongClick(v, position);return true;}});}}@Overridepublic 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() {@Overridepublic void onTakePhotoClick() {showImageDialog();}@Overridepublic void onItemLongClick(View view, int position) {showDeletePop(view, position);}});mRlvImage.setAdapter(mImageAdapter);

// 添加图片mSDImageList.add(imageUri);mImageAdapter.notifyDataSetChanged();// 长按删除mSDImageList.remove(position);mImageAdapter.notifyDataSetChanged();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。