ViewPager嵌套GridView引發的一系列UI卡頓不順暢的問題

來自:http://my.oschina.net/u/174250/blog/146265


由於項目要求,需要做一個日曆的頁面,做法採用ViewPgaer+GridView來做,初步過程很順利,成型以後,出現UI現象有(1)Acitivity加載時間過長 (2)滑動Viewpager出現卡頓現象;

    這兩個問題看起來很簡單,實際上要適配大部分機型使之流暢也要費很多功夫,各種測試和調試都是必須的;

     經過各種測試,得出如下結果:

     (1)問題一的原因有兩個:

            原因一:導致activity加載過長的原因是在onCreate初始化的ViewPager,由於日曆是採用動態加載的形式,即索引定爲60的時候默認會加載59和61,加上加載完數據以後需要渲染gridview消耗了一定的時間,在各種機型上面體驗都不夠流暢;

            原因二:activity其餘還有幾十個ui控件的初始化也造成activity初始化時間過長;

            解決方法:在Viewpager的adapter裏面針對第一次加載的時候使用new Handler().post或者AsynTask進行延遲加載;activity中過多的ui控件請使用new Handler().post進行初始化,在加載過程中先現在加載UI狀態;

 

      (2)問題二的原因也有兩個:

           原因一:滑動的時候需要預加載另外兩份數據導致UI卡頓;

           原因二:在onPageSelected裏面做耗時操作,經測試可知onPageSelected是執行刷新UI之前的,所以造成滑動會卡的現象;

           解決方法同上,在onPageSelected裏面使用new Handler().post或者AsynTask進行延遲初始化;


發佈了5 篇原創文章 · 獲贊 15 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章