项目背景
最近在做 Android 项目时,需要实现一个类似微信朋友圈的'发说说'功能。核心需求包括:支持拍照、从图库选择图片、以及多张图片批量上传。市面上很多 App 都有类似功能,但具体实现细节往往各有不同。下面分享一下基于 Retrofit2.0 和 PhotoPicker 库的实现过程。
一、集成图片选择器
本项目使用了一个名为 photopicker 的开源库,它封装了图片选择和预览的功能,支持是否调用相机、选中后预览等操作。
1. 初始化 Intent
在 Activity 中简单配置 PhotoPickerIntent:
PhotoPickerIntent intent = new PhotoPickerIntent(MainActivity.this);
intent.setSelectModel(SelectModel.MULTI); // 多选模式
// intent.setShowCamera(true); // 是否显示拍照按钮
intent.setMaxTotal(6); // 最多选择照片数量,默认为 6
intent.setSelectedPaths(imagePaths); // 已选中的照片地址,用于回显选中状态
startActivityForResult(intent, REQUEST_CAMERA_CODE);
2. 处理返回结果
重写 onActivityResult 方法,根据请求码区分是选择了照片还是预览了照片:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CAMERA_CODE:
loadAdapter(data.getStringArrayListExtra(PhotoPickerActivity.EXTRA_RESULT));
break;
case REQUEST_PREVIEW_CODE:
loadAdapter(data.getStringArrayListExtra(PhotoPreviewActivity.EXTRA_RESULT));
break;
}
}
}
二、UI 适配:GridAdapter
在展示图片列表时,我们需要一个特殊的入口来触发选择器。这里采用在路径集合中默认添加一个特殊标识(如 "000000")的方式。


