卡片切换效果

This commit is contained in:
zhangyuanzhen
2020-03-17 21:35:23 +08:00
parent 0a277721d7
commit bb3a238815
6 changed files with 79 additions and 21 deletions

View File

@@ -28,7 +28,7 @@ public class FragmentStack {
private Stack< FragmentDescriptor > mFragmentStack = new Stack<>();
private FragmentManager mFragmentManager;
private FragmentTransaction mFragmentTransaction;
//private FragmentTransaction mFragmentTransaction;
private int mContainerId;
private Activity mActivity;
private FragmentDescriptor mCurrentFragment;
@@ -69,7 +69,7 @@ public class FragmentStack {
return;
}
mFragmentTransaction = mFragmentManager.beginTransaction();
FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
if ( mCurrentFragment != null ) {
mFragmentTransaction.hide( mCurrentFragment.getFragment() );
@@ -78,8 +78,9 @@ public class FragmentStack {
if ( descriptor.hasTransition() ) {
mFragmentTransaction.setTransition( FragmentTransaction.TRANSIT_FRAGMENT_OPEN );
}
mFragmentTransaction.show(descriptor.getFragment());
//mFragmentTransaction.addToBackStack( null );
mFragmentTransaction.commitAllowingStateLoss();
mFragmentTransaction.commitNowAllowingStateLoss();
if ( descriptor.hasTransition() ) {
mFragmentManager.executePendingTransactions();
}
@@ -100,14 +101,14 @@ public class FragmentStack {
return;
}
mFragmentTransaction = mFragmentManager.beginTransaction();
FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
mCurrentFragment = mFragmentStack.pop();
if ( mCurrentFragment != null ) {
mFragmentTransaction.remove( mCurrentFragment.getFragment() );
}
if ( mFragmentStack.isEmpty() ) {
mFragmentTransaction.commitAllowingStateLoss();
mFragmentTransaction.commitNowAllowingStateLoss();
if ( mCurrentFragment.isNotifyMainModule() ) {
if ( mFragmentStackTransactionListener != null ) {
mFragmentStackTransactionListener.onTransaction( getStackSize() );
@@ -120,7 +121,7 @@ public class FragmentStack {
FragmentDescriptor fragment = mFragmentStack.peek();
if ( fragment != null ) {
mFragmentTransaction.show( fragment.getFragment() );
mFragmentTransaction.commitAllowingStateLoss();
mFragmentTransaction.commitNowAllowingStateLoss();
}
if ( mCurrentFragment.isNotifyMainModule() ) {
@@ -166,11 +167,11 @@ public class FragmentStack {
invokeCallback();
return;
}
mFragmentTransaction = mFragmentManager.beginTransaction();
FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
for ( FragmentDescriptor descriptor : mFragmentStack ) {
mFragmentTransaction.remove( descriptor.getFragment() );
}
mFragmentTransaction.commitAllowingStateLoss();
mFragmentTransaction.commitNowAllowingStateLoss();
mFragmentStack.clear();
mCurrentFragment = null;
if ( mFragmentStackTransactionListener != null ) {