因爲項目要求,須要作一個日曆的頁面,作法採用ViewPgaer+GridView來作,初步過程很順利,成型之後,出現UI現象有(1)Acitivity加載時間過長 (2)滑動Viewpager出現卡頓現象; post
這兩個問題看起來很簡單,實際上要適配大部分機型使之流暢也要費不少功夫,各類測試和調試都是必須的; 測試
通過各類測試,得出以下結果: ui
(1)問題一的緣由有兩個: 調試
緣由一:致使activity加載過長的緣由是在onCreate初始化的ViewPager,因爲日曆是採用動態加載的形式,即索引定爲60的時候默認會加載59和61,加上加載完數據之後須要渲染gridview消耗了必定的時間,在各類機型上面體驗都不夠流暢; 索引
緣由二:activity其他還有幾十個ui控件的初始化也形成activity初始化時間過長; ci
解決方法:在Viewpager的adapter裏面針對第一次加載的時候使用new Handler().post或者AsynTask進行延遲加載;activity中過多的ui控件請使用new Handler().post進行初始化,在加載過程當中先如今加載UI狀態; it
(2)問題二的緣由也有兩個: 渲染
緣由一:滑動的時候須要預加載另外兩份數據致使UI卡頓; grid
緣由二:在onPageSelected裏面作耗時操做,經測試可知onPageSelected是執行刷新UI以前的,因此形成滑動會卡的現象; 方法
解決方法同上,在onPageSelected裏面使用new Handler().post或者AsynTask進行延遲初始化;