当片段在ViewPager上可见时启动动画



我正在使用ViewPager和FragmentStatePagerAdapter,并且我希望在片段可见时并且仅在该片段可见时在片段中启动动画。问题是,当片段是用户当前看到的片段之后的片段时,动画就开始了。我将动画代码从"onActivityCreated"片段函数移到了"onStart"片段函数,甚至移到了《onResume》片段函数,但同样的事情也发生了。

基本上,我需要等待片段成为用户看到的页面来启动一些代码。我该怎么做?

提前谢谢。

我成功了。

    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代码中。

您是否尝试过使用以下内容:

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

您可以在片段中覆盖setUserVisibleHint

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (mAnimation == null)
        return;
    if (isVisibleToUser) {
        mAnimation.resumeAnimation();
    } else {
        mAnimation.pauseAnimation();
    }
}

使用这个。适用于FragmentStatePagerAdapter。

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

相关内容

  • 没有找到相关文章

最新更新