翻譯 By Long Luo
原文鏈接:Introducing Smoothie
Pattrn UI中的很大一部分是在滑動時從雲端獲取圖片列表。所以我花了相當長的一段時間去調試,以獲得滑動時的體驗儘可能的流暢。在過去的幾周裏,我一直在試圖解耦代碼,完成了一個很小的庫:Smoothie。
Smoothie提供了一個簡單的API來異步加載ListView/GridView的項目,以和UI線程分離。它做了所有你所期望做的事情,加載項目變得可見,取消要求回收的View對應的項目等。但它所完成的還不止這些。
Smoothie是手勢識別:在Fling手勢時,它會必須發起加載項目請求;在滑動列表時,當你的手指按下時,將會啓用增量加載項目請求。此外,它支持當前屏幕外項目預加載功能,當你滑動時,可以減少加載佔位符類型的項目數。說穿來,Smoothie使用了一個支持可以阻塞隊列動態優先執行的的線程池。在屏幕上滑動時,屏幕外即將可見的項目加載請求將動態的獲取更高的優先級。
那麼,怎麼使用它呢?很簡單:
1. 首先在你的佈局文件中增加一個AsyncListView或者AsyncGridView,只需要增加一個額外傳遞的方法到響應的父類中。
2. 然後實現一個和你的應用程序加載和顯示項目邏輯一致的ItemLoader。你將需要重寫下面四種方法:getItemParams(), loadItem(), loadItemFromMemory()以及displayItem()。
3. 最後在ItemLoader中建一個ItemManager,同時把它和目標AsyncListView或者AsyncGridView關聯起來。
在你的ListView/GridView控件需要異步加載時,考慮下把Smoothie作爲你的輕量骨架。您可以輕鬆地連接您自己的圖像加載/緩存框架在裏面。例如,一個典型的示例應用,Android-BitmapCache實現了ItemLoader使用一個簡單的淡入淡出的動畫來顯示圖像。
除了在代碼中的API文檔,還可以看看App示例,一邊更好地瞭解如何使用該庫。請記住,API是不是最終版本哦。目前反響是非常好的!
Enjoy it:-)