2012-07-26 48 views
4

我將ViewPager與FragmentStatePagerAdapter一起使用,並且我想在片段可見並且只有可見時纔在片段中啓動動畫。 的問題是,當這個片段誰是目前被用戶看到一前一後的一個動畫開始。 我感動從「onActivityCreated」片段功能的動畫代碼爲「在onStart」片段的功能,甚至到「的onResume」片段的功能,但同樣的事情發生。在ViewPager上可見片段時啓動動畫

基本上我需要等待片段是由用戶看到推出一些代碼的頁面。我怎樣才能做到這一點?

在此先感謝。

+0

弄得有點...所以動畫起步早?動畫片段被調用之前? – jnthnjns 2012-07-26 16:00:07

+0

是的動畫開始得太早。只要在屏幕上看到包含動畫的前一頁,動畫就會開始。 – thomaus 2012-07-26 16:09:18

回答

8

我做到了。

CustomOnPageChangeListener page_listener = new CustomOnPageChangeListener(); 
    view_pager.setOnPageChangeListener(page_listener); 

    ... 

    private static class CustomOnPageChangeListener extends SimpleOnPageChangeListener 
    { 
     @Override 
     public void onPageSelected(int position) 
     { 
      if (position == fragment_position) 
      { 
       MyFragment fragment = (MyFragment) fragment_pager_adapter.instantiateItem(view_pager, fragment_position); 
       fragment.startAnimation(); 
      } 

      super.onPageSelected(position); 
     } 
    } 

,當然,你必須寫一個startAnimation()功能啓動動畫到MyFragment代碼。

1

您是否嘗試過使用下列內容:

@Override 
public void onWindowFocusChanged (boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) 
     myTextView.startAnimation(anim); 
} 
+1

但這是爲了活動。我正在尋找一種方法來檢測當給定片段可以通過ViewPager輸出畫面所示。 – thomaus 2012-07-26 16:10:24

+0

好吧,那麼也許你正在尋找'ViewPager.OnPageChangeListener'然後'onPageSlected' – jnthnjns 2012-07-26 16:14:59

+0

我只是試圖使用onPageSelected但問題是一樣的。我怎樣才能從這個onPageSelected函數從當前頁面啓動一個函數? – thomaus 2012-07-26 16:51:59

0

使用此。完美地爲FragmentStatePagerAdapter工作。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // TODO 
    } 
} 
相關問題