OnPageSelected Snapping导致布局延迟

时间:2013-11-22 23:45:46

标签: android android-viewpager

我会尽力解释我的问题。

我有一个viewpager,其中包含很多页面,我可以在它们之间进行水平滑动。我添加了一个监听器(OnPageChangeListener),因为我需要在页面更改时做一些事情。

在OnPageSelected中我更新了一个标题,它只是一个TextView。事实是,这种更新导致我的滑块“滞后”一毫秒,这会中断平滑的流动。但这只会在我进行“快速”滑动时发生,这意味着实际的捕捉会导致滑块改变页面。如果我整个滑动到下一页,那很好。

基本上我想知道我的选择是什么。我想在完全完成对页面的捕捉时更新标题,而不是同时导致小的闪烁效果。

1 个答案:

答案 0 :(得分:0)

根据Google Docs,当选择新页面时,将调用viewpager onPageSelected 动画不一定完整。如果在onPageSelected中更改标题,则更改UI会导致动画延迟,并且看起来像滞后。

您可以在 onPageScrollStateChanged(int state)方法中更改标题的解决方案。

pager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int state) {
             case ViewPager.SCROLL_STATE_IDLE:
               int arg0=pager.getCurrentItem();
               if(arg0==0)
            {

                header.setText("Your Text Here");
            }

        }
    });