在 android 的 onscrolllistener 整個事件我主要分析下他的執行順序:
實作滾動事件的監聽接口
之前一直很迷糊,後來仔細測試後得出上面的結論
另外對于 listview 圖檔清單的滾動,應該在
scroll_state_fling 時讓圖檔不顯示,提高滾動性能讓滾動小姑更平滑
scroll_state_idle 時顯示目前螢幕可見的圖檔
對于 onscroll() 接口方法基本上不用他
之前看文檔上的說法,用谷歌翻譯出來以為 onscroll 方法是滾動完成後的回調,結果實測是滾動執行中的回調,清單稍滾動一段就要觸發幾十次
http://developer.android.com/reference/android/widget/abslistview.onscrolllistener.html
不知是文檔沒描述對,還是翻譯不準确,看他語态過去完成時應該是描述錯了吧,感覺應該是 scrolling 才對
-----------------------------------------------------------------------------------------------------------------------
補充:
之前的順序測試還不夠細緻,今天偶然測試間發現問題:
1. 當手指隻輕觸螢幕不拉動隻會觸發一次 onscroll 方法,不會觸發其他滾動事件
2. 如果手指觸碰螢幕後停滞一下再滑動則首先執行一次 onscroll 方法 然後才是 scroll_state_touch_scroll 事件
3. 如果手指碰到螢幕後直接滑動則第一次就執行 scroll_state_touch_scroll 事件
3. 觸發 scroll_state_touch_scroll 事件後還會繼續多次觸發 onscroll 事件,而不是直接觸發 scroll_state_fling 事件
4. 滾動後 不一定 會觸發 scroll_state_fling 事件,可能和手指滑動的距離有關系
5. 滾動的過程中會多次調用 onscroll 方法
6. 除了 onscroll 觸發多次,其他事件在整個過程中隻會觸發一次