luban壓縮多圖路徑重複問題解決
阿新 • • 發佈:2019-01-02
描述:luban作為目前網上非常流行的一款壓縮圖片的開源庫,在github上也擁有接近5000star的收藏量。 它的使用方便是毋庸置疑的。
最近在自己的專案中添加了luban壓縮,出現了壓縮多圖的時候返回路徑重複的情況,去查看了github上的issues,發現有很多人出現了和我一樣的情況,我苦惱了很久並沒有解決,最終在一個大神小夥伴的幫助下完成了。
/** * 壓縮多圖 * * @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()); }
以上僅為個人修改嘗試,希望能夠幫助一些遇到該情況的小夥伴。(我是一個小菜雞)
在此感謝幫助我的小夥伴 --> 土夜 嗯~ 就是這樣