我有什麼ViewPager當前片段能見度
我有5個片段一ViewPager。我想爲片段內的某些TextView設置動畫,只要它們對用戶可見即可。
我無法使用onResume(),因爲已經創建了左側和右側的片段。我無法使用setUserVisibilityHint(),因爲它在onCreateView()之前調用,所以視圖還沒有準備好。
那麼只要某個特定片段變得對用戶可見,應該如何動畫視圖?
我有什麼ViewPager當前片段能見度
我有5個片段一ViewPager。我想爲片段內的某些TextView設置動畫,只要它們對用戶可見即可。
我無法使用onResume(),因爲已經創建了左側和右側的片段。我無法使用setUserVisibilityHint(),因爲它在onCreateView()之前調用,所以視圖還沒有準備好。
那麼只要某個特定片段變得對用戶可見,應該如何動畫視圖?
我不確定,但是如果您在onCreateView
之前調用setUserVisibilityHint
調用,那麼請在這裏檢查null(在視圖字段中引用),如果它不爲空 - 則爲它設置動畫效果。還總是在onCreateView
中動畫。
如果要在單個片段中執行此操作,則可以對片段轉換中的每個片段使用isVisible()
並創建一個偵聽器。每當片段變得可見時,偵聽器將被調用,並且每個片段將實現該偵聽器,並在重寫的方法中執行您的預期任務。
(1)我不能使用的onResume()作爲已創建所述片段的左側和右側。 (2)我不能使用setUserVisibilityHint(),因爲它在onCreateView()之前調用,所以視圖還沒有準備好。
那麼只要某個特定片段變得對用戶可見,應該如何動畫視圖?
你說得對(1)和(2)。但是,setUserVisibilityHint()
被稱爲再次與真值後顯示前面的碎片。但在第一次運行時,要顯示的片段在onCreateView()
之前調用setUserVisibilityHint()
。
SOL:您應該使用上述setUserVisibilityHint()
以及onResume()
的行爲來爲視圖設置動畫,只要特定片段對用戶可見即可。
setUserVisibilityHint(boolean isVisibleToUser)
被稱爲與 真正的參數值的方式。但是隨着片段的狀態不再恢復,我們推遲並讓onResume()
處理動畫。setUserVisibilityHint(boolean isVisibleToUser)
將調用與 真PARAM它,他們一上來就顯示。在這裏你檢查 片段動畫或不動畫和動畫。CODE
a)宣佈兩次全球布爾字段:isAnimated
和isOnDisplay
A.1)設置isAnimated
布爾爲True;
二)覆蓋setUserVisibilityHint(boolean isVisibleToUser)
:
在這裏你設置isOnDisplay
布爾值isVisibleToUser
和檢查是片段沒有動畫,是國家復會,是可見的用戶。
{ if(!isAnimated && isResumed() && isVisibleToUser) // DO Animation }
C)覆蓋onResume()
檢查的片段沒有動畫,是可見的用戶。
{ if(!isAnimated && isVisibleToUser) // DO Animation }
我知道這個答案可能有點晚,但我希望它可以幫助其他人在類似的情況。
您可以使用FragmentViewPager庫(我是作者),它處理您面臨的問題。其特點是:
Fragment
頁面時,他們實際上是 顯示/隱藏到FragmentViewPagers
(嵌套)多層次基本用法是:
FragmentViewPager
附加到活動 或片段,如同使用本地ViewPager
FragmentViewPager
的適配器。你的適配器要繼承 com.sbrukhanda.fragmentviewpager.adapters.FragmentPagerAdapter
或 com.sbrukhanda.fragmentviewpager.adapters.FragmentStatePagerAdapter
覆蓋onResumeFragments()
主辦的活動,並呼籲 FragmentViewPager.notifyPagerVisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onResumeFragments() {
super.onResumeFragments();
mFragmentsPager.notifyPagerVisible();
...
}
或onResume()
託管片段和呼叫 FragmentViewPager.notifyPagerVisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onResume() {
super.onResume();
mFragmentsPager.notifyPagerVisible();
...
}
覆蓋主辦活動或片段的,並呼籲 FragmentViewPager.notifyPagerInvisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onPause() {
super.onPause();
mFragmentsPager.notifyPagerInvisible();
...
}
FragmentVisibilityListener
!如果您希望看到更完整的示例代碼,請檢查項目的sample project。
你試過ViewPager.setOnPageChangeListener()嗎?在調用onPageSelected時激活視圖 – jobcrazy