ViewPager当前片段可见性 [英] ViewPager Current Fragment Visibility
问题描述
我有什么
我有一个包含5个片段的ViewPager.每当片段对用户可见时,我都希望对其进行动画处理.
I have a ViewPager with 5 fragments. I want to animate some TextViews inside the fragments whenever they become visible to the user.
我无法使用onResume(),因为左侧和右侧的片段已经创建.我不能使用setUserVisibilityHint(),因为它在onCreateView()之前被调用,因此视图尚未准备就绪.
I can't use onResume() as the fragments to the left and right are already created. I can't use setUserVisibilityHint() as it is called before onCreateView() so the views are not ready yet.
那么,每当用户看到特定片段时,如何为视图设置动画?
So what should be the way to animate the views whenever a particular fragment becomes visible to the user?
推荐答案
我知道这个答案可能会有点晚,但是我希望它可以在类似情况下为他人提供帮助.
I know this answer might be a bit late, but I hope it can help others in a similar situation.
您可以使用 FragmentViewPager 库(我是作者),该库可以解决您面临的问题为你.其特点是:
You could use FragmentViewPager library (I am the author), which deals with the issue you are facing for you. Its features are:
- 允许其
Fragment
页在实际出现时得到通知 对用户可见/不可见 - 支持多个级别的
FragmentViewPagers
(嵌套) - 提供了控制其分页的方法
- allows its
Fragment
pages to get notified when they are actually visible/invisible to the user - supports multiple levels of
FragmentViewPagers
(nesting) - provides methods to control its paging
基本用法是:
- 以编程方式或通过XML将
FragmentViewPager
附加到活动 或片段,就像使用本机ViewPager
一样
- 设置
FragmentViewPager
的适配器.您的适配器应该继承com.sbrukhanda.fragmentviewpager.adapters.FragmentPagerAdapter
或com.sbrukhanda.fragmentviewpager.adapters.FragmentStatePagerAdapter
-
覆盖托管活动的
onResumeFragments()
并调用FragmentViewPager.notifyPagerVisible()
:
- Attach
FragmentViewPager
programmatically or via XML to an Activity or Fragment, as you would with nativeViewPager
- Set
FragmentViewPager
's adapter. Your adapter should inheritcom.sbrukhanda.fragmentviewpager.adapters.FragmentPagerAdapter
orcom.sbrukhanda.fragmentviewpager.adapters.FragmentStatePagerAdapter
Override
onResumeFragments()
of the hosting Activity and callFragmentViewPager.notifyPagerVisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onResumeFragments() {
super.onResumeFragments();
mFragmentsPager.notifyPagerVisible();
...
}
主机Fragment的
或onResume()
并调用
FragmentViewPager.notifyPagerVisible()
:
or onResume()
of the hosting Fragment and call
FragmentViewPager.notifyPagerVisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onResume() {
super.onResume();
mFragmentsPager.notifyPagerVisible();
...
}
覆盖托管活动或片段的onPause()
并调用
FragmentViewPager.notifyPagerInvisible()
:
Override onPause()
of the hosting Activity or Fragment and call
FragmentViewPager.notifyPagerInvisible()
:
private FragmentViewPager mFragmentsPager;
@Override
public void onPause() {
super.onPause();
mFragmentsPager.notifyPagerInvisible();
...
}
FragmentVisibilityListener
希望收到有关其可见性状态的回调
FragmentVisibilityListener
on all Fragment pages that you
wish to receive callbacks for their visibility state如果您希望看到更完整的示例代码,请检查项目的示例项目.
If you wish to see a more complete sample code, then check project's sample project.
这篇关于ViewPager当前片段可见性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!