日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从选择到上传,可能是最贴心的高仿朋友圈编辑了

發布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从选择到上传,可能是最贴心的高仿朋友圈编辑了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Luban-Circle-Demo

自己要用的上這個,找輪子的時候正巧發現了一個不錯的圖片壓縮輪子魯班;正巧原repo主用的rxjava,我一直沒有時間點亮這個技能樹,所以把rxjava部分扣掉了;正巧大部分的朋友圈輪子都是討論的顯示列表和多圖選擇器,而沒有一個不錯的編輯頁(包括圖片列表UI和圖片上傳功能),所以把自己的代碼整理了下,開了個輪子方便大家借鑒。


效果圖

Intro

這是一個完整的類似朋友圈的圖片選擇、壓縮、上傳的demo,改改就能拿來用。仿朋友圈按順序上傳圖片至七牛,基于luban算法壓縮修改了luban項目,扣掉rxjava部分,采用線程池,在銷毀時用shutDownNow()即可。

QiniuUtils和ImageCompressUtils分別是上傳至七牛和魯班壓縮的工具類,注釋和todo在代碼中給的非常詳盡,就不再討論了。這里主要來聊聊圖片上傳的順序與用戶選擇的順序一致的問題,這是比較麻煩的一個地方。(代碼格式化好麻煩,請配合ide閱讀)

?

private void post() {//線程不安全,判斷是否壓縮完畢;原始圖片地址-壓縮后文件final Map<String, File> compressedFiles = new HashMap<>();//線程不安全,判斷是否上傳完畢;壓縮后文件-上傳KEYfinal Map<File, String> uploadedKeys = new HashMap<>();。。。。。for (final String imgPath : mImagePathes) {//按照原始圖片順序排序File temp = compressedFiles.get(imgPath);img_urls += uploadedKeys.get(temp) + ",";}

?

要正確排序的關鍵點是用了2個線程不安全的Map來判斷和保存操作結果。compressedFiles保存的“原始圖片地址-壓縮后文件”鍵值對,uploadedKeys保存的“壓縮后文件-上傳KEY”鍵值對。當壓縮、上傳的過程結束后,編譯原始的圖片地址(這個順序是正確的),從compressedFiles中獲得壓縮后文件的File,然后據此File從uploadedKeys中獲取七牛返回的key(我上傳服務器是用逗號隔開一次性把所有圖片地址key都post到服務器)。

TODO

要完整使用請修改自己的七牛token獲取邏輯,請項目內搜索TODO修改。

技能/輪子樹

https://github.com/Curzibn/Luban?圖片壓縮

https://github.com/lovetuzitong/MultiImageSelector?多圖選擇

https://github.com/huijimuhe/monolog-android?網絡模塊與自定義Recyclerview

https://github.com/litesuits/android-common?線程池與其他utils

Github地址

https://github.com/huijimuhe/Luban-Circle-Demo

轉載于:https://www.cnblogs.com/matoo/p/5742253.html

總結

以上是生活随笔為你收集整理的从选择到上传,可能是最贴心的高仿朋友圈编辑了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。