開源系列1---造個圖片選擇器

打算開個開源系列,用來分享在項目過程中些的一些小輪子。
在這年的末尾,擠下時間,看能改幾個還勉強過得去的出來分享給大家。
能力有些,實現得也不算很優雅。
還望各大神指點。

我要造輪子

作爲一名愛折騰人員,重複造輪子這種事還是常做的。
沒辦法啊,做的過程才能發現問題嘛!最少我在做的過程就遇到啦!
例如陰影效果,圖片如何壓縮顯示的問題(蹩腳的寫了一個ImageLoader實在不怎樣,改用Fresco!),排列等等問題

我們直接上效果圖,這個是完成後的樣子,目前改得勉強像一回事了。
就先粘貼上來,有需要的就拿去再根據自己需要改一個。

這裏寫圖片描述這裏寫圖片描述

這裏寫圖片描述

項目的下載地址請點擊這裏

三個參考案例

1. MultiImageSelector

看起來效果還是挺好的:
這裏寫圖片描述 這裏寫圖片描述

2. 鴻洋的超高仿微信圖片選擇器 圖片該這麼加載

這裏寫圖片描述

3.Android-Ultra-Photo-Selector

地址:https://github.com/AizazAZ/Android-Ultra-Photo-Selector

這裏寫圖片描述

關於這些案例的一些觀點:

  1. 縮略圖
    現在看到的這幾個不是使用系統生成的縮略圖來顯示的,而是找到原圖,然後壓縮顯示,這種策略不是很優雅,因爲要實時的弄,關於縮略圖的部分,歡迎看下官方的介紹,這有時候也是無奈之舉吧。因爲曾經遇到過有一些第三方room會把系統圖庫給砍掉,用別的來替代。所以爲了做適配和兼容,只能自己來搞了。
  2. 彈出來的目錄框
    在點擊左下角的目錄選項的時候,彈出來的目錄框沒有考慮到如果文件夾少的時候,底部是沒填充滿的。
    這裏寫圖片描述

  3. 陰影效果
    彈出來的目錄的背後是要加個陰影效果的,但目前看到的都是直接整個界面給抹黑,不是很好看。
    基本使用的方法就像下面這樣,這個效果不是很好看。

      WindowManager.LayoutParams lp = getWindow().getAttributes();
     lp.alpha = 0.7f;
     getWindow().setAttributes(lp);
    

    微信的版本是這樣的,他是背後的一層,在Actionbar下面,且是跟隨着彈出來的框逐漸加深的。
    這裏寫圖片描述

後記

在做這個輪子的過程還是遇到一些小問題,所以這裏列一下

  • 路徑Bug
    在開發過程過程,遇到一些bug,到現在還是很困惑,但時間限制,沒去深究。
    例如有時候,我們的ContentResolver 返回的路徑中,有時小寫,有時大寫。
    例如下面

    /storage/emulated/0/Tencent/MicroMsg/WeiXin/1450409463723.jpg       
    /storage/emulated/0/tencent/MicroMsg/WeiXin/1450409423269.jpg
    /storage/emulated/0/Tencent/MicroMsg/Download/da_1446188743286.jpg
    /storage/emulated/0/tencent/MicroMsg/WeiXin/mmexport1446289719320.jpg
    /storage/emulated/0/tencent/MicroMsg/WeiXin/microMsg.1445260200558.jpg
    

    返回的路徑裏面的tencent這個單詞有時是大寫,有時是小寫,導致做判斷時候出錯!
    真的很讓人絕望!!找了好久才調試出是這出了問題 !!有那個大神懂得看到了反饋下!
    所以最後只能靠這句來搞定path.equalsIgnoreCase(imageBean.path),忽略大小寫。

  • 掃描圖片
    要掃描整個手機圖片, 如果用戶突然把手機某個目錄的圖片刪除了,在打開我們的程序,則會程序返回的數據還是歷史數據,點擊那個目錄其實是空空如也,系統一般需要用戶去重開機,更新緩存。

  • 陰影效果
    目前用了一個很蠢的辦法來解決,就是在我們的彈出來的目錄和背後的圖片間夾一個view來做陰影,然後配合一個alpha動畫。
    狀態:不怎麼優雅的解決了!

  • 目錄的彈出效果
    這個功能沒有優化,看到微信的那個彈出來的文件夾列表的效果挺好的,這個下次有空再繼續做
    另外這個框的大小的調整寫得還是挺醜的,
    監聽getViewTreeObserver().addOnGlobalLayoutListener()的方式來改變大小。

  • 預覽圖片的界面優化
    有個小問題就是預覽圖片就只能看,不支持多指觸控進行方法,縮小,旋轉等操作,以前的項目有寫過一個類似插件,下次再把它加上。
    狀態:解決!

  • 提示時間效果
    在滾動的過程中,需要在頂部哪裏加多個時間的提示,出現和結束加多個動畫,看起來好看些

  • 拍照問題
    真的遇到過第三方room把系統自帶的相機給閹割了的,然後搞了一個不知道什麼鬼的來替代,導致跳去拍照過程失敗,下次有空把自己以前寫的也繼承到裏面去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章