Android:支持多选的本地相册
前段時(shí)間在做一個(gè)動(dòng)態(tài)發(fā)布功能,需要用到圖片上傳。一開始直接調(diào)用的系統(tǒng)相冊(cè)和相機(jī),由于系統(tǒng)相機(jī)不支持多選,就花點(diǎn)時(shí)間做了個(gè)本地相冊(cè),在此開源下。
先上截圖,依次為選擇相冊(cè)界面、相冊(cè)詳情界面、查看圖片大圖界面
??
相冊(cè)列表按圖片數(shù)量降序排序,相冊(cè)詳情列表按圖片時(shí)間降序排序,對(duì)比了下微信和QQ的相冊(cè),讀取的文件基本一致。
接下來說下相冊(cè)文件遍歷的思路。首先肯定不會(huì)是通過文件夾逐級(jí)遍歷的,這樣效率太低。查了下API發(fā)現(xiàn)Android的系統(tǒng)數(shù)據(jù)庫(kù)已經(jīng)存儲(chǔ)了所有的圖片路徑和縮略圖路徑(如果有),可直接通過ContentProvider來獲取,獲取大圖的URI是
MediaStore.Images.Media.EXTERNAL_CONTENT_URI獲取縮略圖的URI是
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI我的做法是先遍歷所有大圖,獲取ID和路徑,再通過大圖的ID去查找縮略圖路徑,在相冊(cè)中顯示的都是縮略圖,這樣可以提高顯示速度,同時(shí)減少內(nèi)存開銷。但是通過大圖ID去查找縮略圖這一步是需要消耗一點(diǎn)時(shí)間的,因此將它在App啟動(dòng)時(shí),開啟線程執(zhí)行。LocalImageHelper類用以執(zhí)行該操作。
待完善點(diǎn):相冊(cè)的初始化是放在應(yīng)用啟動(dòng)時(shí),初始化一次后就不再重新執(zhí)行,因此假如在應(yīng)用開啟后,設(shè)備內(nèi)添加了新的圖片或刪除了圖片,應(yīng)用內(nèi)緩存的相冊(cè)仍然不會(huì)改變,下一步可以在每次打開相冊(cè)時(shí)和本地圖片做一次對(duì)比,對(duì)新增的和刪除的圖片做一個(gè)更新。
Demo中使用了ImageLoader庫(kù)來展示圖片,使用的是Android Studio開發(fā)。
?
GitHub地址:https://github.com/LinJZong/LocalAlbum.git
轉(zhuǎn)載于:https://www.cnblogs.com/AceIsSunshineRain/p/5187204.html
總結(jié)
以上是生活随笔為你收集整理的Android:支持多选的本地相册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql benchmark基准测试
- 下一篇: 16.U-boot的工作流程分析-244