ViewPager当前片段可见性 [英] ViewPager Current Fragment Visibility

查看:187
本文介绍了ViewPager当前片段可见性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有什么

我有一个包含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

基本用法是:

  1. 以编程方式或通过XML将FragmentViewPager附加到活动 或片段,就像使用本机ViewPager
  2. 一样
  3. 设置FragmentViewPager的适配器.您的适配器应该继承 com.sbrukhanda.fragmentviewpager.adapters.FragmentPagerAdaptercom.sbrukhanda.fragmentviewpager.adapters.FragmentStatePagerAdapter
  4. 覆盖托管活动的onResumeFragments()并调用 FragmentViewPager.notifyPagerVisible():

  1. Attach FragmentViewPager programmatically or via XML to an Activity or Fragment, as you would with native ViewPager
  2. Set FragmentViewPager's adapter. Your adapter should inherit com.sbrukhanda.fragmentviewpager.adapters.FragmentPagerAdapter or com.sbrukhanda.fragmentviewpager.adapters.FragmentStatePagerAdapter
  3. Override onResumeFragments() of the hosting Activity and call FragmentViewPager.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();
        ... 
    }
    

  • 您在所有Fragment页面上执行的
  • FragmentVisibilityListener 希望收到有关其可见性状态的回调
  • 您准备好了!
  • Implement FragmentVisibilityListener on all Fragment pages that you wish to receive callbacks for their visibility state
  • You are ready to go!
  • 如果您希望看到更完整的示例代码,请检查项目的示例项目.

    If you wish to see a more complete sample code, then check project's sample project.

    这篇关于ViewPager当前片段可见性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆