有时候我们会碰到这样的需求 上传图片 不压缩会造成oom 浪费流量 可是多张图片怎么压缩呢
/**
* 压缩多图
*
* @param pathList 传入的为图片原始路径
*/
private void compressMore(final List<String> pathList){
final LinkedList<Runnable> taskList = new LinkedList<>();
final ArrayList<String> newList = new ArrayList<>();//压缩后的图片路径
final Handler handler = new Handler();
class Task implements Runnable{
String path;
Task(String path){
this.path = path;
}
@Override
public void run() {
Luban.get(context)
.load(new File(path)) //传人要压缩的图片
.putGear(Luban.THIRD_GEAR) //设定压缩档次,默认三挡
.setCompressListener(new OnCompressListener() { //设置回调
@Override
public void onStart() {
AppManager.I().currentActivity().showDialog("加载中...");
}
@Override
public void onSuccess(File file) {
newList.add(file.getPath());
if(!taskList.isEmpty()){
Runnable runnable = taskList.pop();
handler.post(runnable);
}else {
//完成之后的个人操作
addPaths(newList);
AppManager.I().currentActivity().dismissDialog();
}
}
@Override
public void onError(Throwable e) {
}
}).launch(); //启动压缩
}
}
//循环遍历原始路径 添加至linklist中
for (String path :pathList){
taskList.add(new Task(path));
}
handler.post(taskList.pop());
}