2013-11-22 100 views
2

我會盡力解釋我的問題。OnPageSelected捕捉導致佈局延遲

我有一個viewpager,其中包含很多頁面,我可以在其間水平滑動。我添加了一個監聽器(OnPageChangeListener),因爲我需要在頁面更改時執行一些操作。

在OnPageSelected中,我更新了一個標題,它只是一個TextView。事情是,這種更新導致我的滑塊「滯後」一毫秒,這會中斷平穩流動。但是這隻會發生,如果我做一個「快速」刷卡,這意味着實際的捕捉將導致滑塊更改頁面。如果我將整個方向滑動到下一頁,那很好。

基本上我想知道我的選擇在這裏。我想在捕捉到頁面完成時更新標題,而不是同時引起小的閃爍效果。

+1

你有沒有得到解決方案? –

回答

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"); 
      } 

     } 
    }); 
+2

這個解決方案的問題是viewpager需要一些時間來實現它的IDLE狀態。這也意味着,如果用戶不斷滑動,它永遠不會更新。 –