添加依赖
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下添加配置(不用改)
<activityandroid:configChanges="orientation|screenSize"android:name="me.nereo.multi_image_selector.MultiImageSelectorActivity" />
主页面(可以走MVP逻辑自己写一下吧)
public class MainActivity extends AppCompatActivity {@Overrideprotected 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);}@Overrideprotected 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 pathsList<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() {@Overridepublic void successData(String result) {Log.i("dj", "setSuccess is " + result);}@Overridepublic void failureData(String error) {Log.i("dj", "SetField is " + error);}});}}}}
网络轻轻封装接口里
@POST@MultipartObservable<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