2

我有一个 TabManager 触发片段之间的过渡,并带有漂亮的滑动动画。

如果我在切换到下一个选项卡之前等待每个转换的动画完成,这会很好地工作。但是,如果我决定快速切换选项卡,那么动画似乎会相互冲突,并且我的片段最终会以错误的方向制作动画。

有什么方法可以取消在开始新的过渡时可能仍在之前过渡上运行的任何动画?

我的代码如下:

@Override public void onTabChanged(String tabId) {

      hostActivity.getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        TabInfo newTab = tabs.get(tabId);
        if (lastTab != newTab) {
            FragmentTransaction ft = hostActivity.getSupportFragmentManager().beginTransaction();

            if (newTab != null) {
                if (newTab.fragment == null) {
                    newTab.fragment = Fragment.instantiate(hostActivity, newTab.clss.getName(), newTab.args);
                }
            }

            if(lastTab != null && newTab != null)
            {
              if(lastTab.index < newTab.index)
              {                       
                  ft.setCustomAnimations(R.anim.slide_in_from_right, R.anim.slide_out_to_left);
              }
              else
              {
                  ft.setCustomAnimations(R.anim.slide_in_from_left, R.anim.slide_out_to_right);
              }
            }

            ft.replace(containerID, newTab.fragment);

            ft.commit();
4

0 回答 0