添加依赖
implementation 'com.github.lovetuzitong:MultiImageSelector:1.2'
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允许程序设置内置sd卡的写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序访问WiFi网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
application下添加配置(不用改)
<activity
android:configChanges="orientation|screenSize"
android:name="me.nereo.multi_image_selector.MultiImageSelectorActivity" />
主页面(可以走MVP逻辑自己写一下吧)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, MultiImageSelectorActivity.class);
intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, true);
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 9);
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_MULTI);
startActivityForResult(intent, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100) {
if (resultCode == RESULT_OK) {
// Get the result list of select image paths
List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
Map<String, String> map = new HashMap<>();
map.put("commodityId", "1");
map.put("content", "this is test");
List<File> fileList = new ArrayList<>();
for(String str : path) {
File file = new File(str);
fileList.add(file);
}
RetrofitUtil.getInstance().postMoreImage("请求地址", map, fileList, new RetrofitUtil.ICallBack() {
@Override
public void successData(String result) {
Log.i("dj", "setSuccess is " + result);
}
@Override
public void failureData(String error) {
Log.i("dj", "SetField is " + error);
}
});
}
}
}
}
网络轻轻封装接口里
@POST
@Multipart
Observable<ResponseBody> postMoreImage(@Url String url//接口地址
, @QueryMap Map<String, String> map //入参数
, @Part MultipartBody.Part[] parts);//图片地址
网络轻轻封装类里
//多图片上传
public void postMoreImage(String url, Map<String, String> params, List<File> list, ICallBack callBack) {
MultipartBody.Part[] parts = new MultipartBody.Part[list.size()];
int index = 0;
for (File file : list) {
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("image", file.getName(), requestBody);
parts[index] = filePart;
index++;
}
mObservedApis.postMoreImage(url, params, parts)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(callBack));
}
Retrofit+RxJava简单使用(GET、POST):网络封装类简单使用
原git地址:MultiImageSelector