今天看了@dodola的android瀑布流實例的源碼,並按照本身的喜愛改了些內容。java
@dodola的源碼路徑:https://github.com/dodola/android_waterfallandroid
我按照我的喜愛更改後的源碼路徑:https://github.com/tingzi/android_waterfallgit
瀑布流如圖所示:github
根據對源碼的分析,暫以我更改後的代碼爲例,分析以下:.net
整個瀑布流用的是ScrollView的子類LazyScrollView。線程
這個LazyScrollView中設置了一個監聽器接口,用來監聽ScrollView執行的不一樣階段。接口以下:code
public interface OnScrollListener { void onBottom(); void onTop(); void onScroll(); void onAutoScroll(int l, int t, int oldl, int oldt); }
對於每一幅圖,都用一個ImageView的子類FlowView來表示。
爲了避免阻塞UI線程,圖片加載和圖片更新都分別用不一樣的線程來作。這兩個線程都在FlowView中。FlowView提供了加載和更新的接口給Activity調用。接口
瀑布流實例的主Activity是MainActivity,常量都保存在Constants類中,方便維護。圖片