素敵なスライド アニメーションを備えたフラグメント間の遷移をトリガーする 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();