Android LazyList 從網路擷取圖片並緩衝

來源:互聯網
上載者:User

原示範地址

 

本文內容
  • 環境
  • 示範 LazyList 從網路擷取圖片並緩衝
  • 參考資料

本文是 Github 上的一個示範,通過網路擷取歌手專輯的縮圖,並顯示在 ListView 控制項中。該示範具備將縮圖緩衝到手機外存的功能,所以叫“Lazy”,這樣就不用每次都通過網路重新擷取。在學習這個示範前,希望你對 Android 的 Adpater 相關有一定的瞭解。

該示範僅僅是獲得縮圖,但在另一篇文章中,另一個作者根據這個 LazyList,又做了一個相對完整的示範(包括歌曲名稱、歌手名、時間長度、縮圖等資訊),像圖 3 所示。

環境
  • Windows 2008 R2 64 位元
  • Eclipse ADT V22.6.2,Android 4.4.3
  • 三星 SM-G3508

 

示範 LazyList 從網路擷取圖片並緩衝

Github上的示範只有一個 Java 包,但我重新劃分了一下,便於理解作者的思路。原始碼就不貼了,你點擊此處下載。

圖 1 項目結構

  • com.fedorvlasov.lazylist.activity 包是主程式。
  • com.fedorvlasov.lazylist.cache 包,負責緩衝,包括緩衝在外存 FileCache 類和記憶體 MemoryCache 類。
  • com.fedorvlasov.lazylist.utils 包,負責流操作。
  • com.fedorvlasov.lazylist.view 包,負責從網路擷取歌手專輯的縮圖,並在 ListView 顯示,同時對縮圖進行緩衝。如果縮圖已緩衝,則 ListView 從緩衝擷取並顯示,否則,從網路擷取。 核心部分是,LazyAdapter 類,它繼承 BaseAdapter,返回 View,即 ListView 中的每行;ImageLoader 類,負責從網路獲得縮圖。
圖 2 左:主程式,從網路獲得縮圖;右:點擊“Clear Cache”清除緩衝重新載入

2 左邊所示,是主程式,從網路獲得縮圖並顯示。當點擊“Clear Cache”按鈕後,程式會清除緩衝,重新載入並顯示縮圖, 2 右邊所示,有顯示出歌手縮圖的,還有沒顯示出的,沒有顯示出來的,是正在從網路擷取~

圖 3 網路擷取音樂列表

這是另一個相對完整的示範,點擊此處下載,這個示範是在 LazyList 基礎完成的,但有 bug,程式不太穩定,程式的運行不是每次都能顯示出列表,即便顯示出來,縮圖卻顯示不出來,還沒搞清楚是怎麼回事(老外寫的東西,有時也不太靠譜),其中一個 bug 是因為版本較低,而 Android 4.0 以上的版本不允許在主線程訪問網路,你可以試試,要是弄明白了,麻煩您告訴我一下~

 

參考資料
  • Github LazyList
  • androidhive android-custom-listview-with-imgae-and-text
  • androidhive android android-custom-listview-with-image-and-text 譯文

 

這三個連結的關係是,第二個連結的示範是根據第一個連結完成的,第三個連結翻譯的第二個連結。

 

下載 Demo

下載 Demo

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.