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