1. 程式人生 > >仿製《58同城》首頁滑動介面

仿製《58同城》首頁滑動介面

先看效果圖:

左圖是58同城,右圖是我模仿它的

  

我用CoordinatorLayout那種方法做,在這裡總結下一直以來的使用經驗,以這個58同城仿製demo為例:

1、 首先要確定誰做dependency(依賴檢視),dependency一定要隨著手勢滑動而位置變化。明顯那個搜尋框是適合的,但還不理想。有時我們甚至找不到合適的人選。所以為什麼我們不自己創造一個呢。我就特意創造了一個dependency,放一個適合的位置上,而且這個dependency高度為0,計算時多方便啊。

2、 編寫Behavior,我在layoutDependsOn()把CoordinatorLayout裡的view都引用了。這很方便,無所謂耦合性的問題。它們都是同一個Activity的,同一佈局的,它們只是隨著滑動設定自己的位置而已,又不是它們內部的程式碼互相糾纏。如果你不這樣做,你就要編寫很多個Behavior,處理滑動時寫上很多重複的程式碼。

上面兩點比較不同於一般的網上教程,但我認為這樣做更好。

3、 然後處理手指按下並滑動的情況:onNestedPreScroll()與onNestedScroll()。onNestedPreScroll()處理上滑,onNestedScroll()處理下滑。

4、 跟著處理手指鬆開的情況:onNestedPreFling()與onStopNestedScroll()。onNestedPreFling()是準備慣性fling時的情況。先設定好dependency的幾個特定位置,例如有:摺疊、展開、下拉到可重新整理、下拉到最大。在actionUp()這個方法分情況處理自動滑動的效果。還有些細節,重新整理完後的自動滑動動畫不同,要分開處理。

5、 在onDependentViewChanged()設定view們隨著dependency的變化而變化。

其他的都是一些細節問題。做那個弧線路徑也比較有技術含量。

詳細專案: