Android瀑布流實例android_waterfall源碼分析
今天看了網(wǎng)上的一篇關于android瀑布流實例的源碼,并按照自己的喜好改了些內(nèi)容。
源碼路徑:https://github.com/dodola/android_waterfall
我按照個人喜好更改后的源碼路徑:https://github.com/tingzi/android_waterfall
瀑布流如圖所示:
根據(jù)對源碼的分析,暫以我更改后的代碼為例,分析如下:
整個瀑布流用的是ScrollView的子類LazyScrollView。
這個LazyScrollView中設置了一個監(jiān)聽器接口,用來監(jiān)聽ScrollView執(zhí)行的不同階段。接口如下:
- 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調(diào)用。
瀑布流實例的主Activity是MainActivity,常量都保存在Constants類中,方便維護。