因为项目要求,须要作一个日历的页面,作法采用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进行延迟初始化;