Skip to content

Instantly share code, notes, and snippets.

@cthulhuplush
Created February 17, 2017 15:51
Show Gist options
  • Save cthulhuplush/cbc46d00549c1b5eaf1df1776fed434c to your computer and use it in GitHub Desktop.
Save cthulhuplush/cbc46d00549c1b5eaf1df1776fed434c to your computer and use it in GitHub Desktop.
public class MainActivity extends AppCompatActivity
{
private static final long MOVE_DEFAULT_TIME = 1000;
private static final long FADE_DEFAULT_TIME = 300;
private FragmentManager mFragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mFragmentManager = getSupportFragmentManager();
loadInitialFragment();
Handler handler = new Handler();
handler.postDelayed(this::performTransition, 1000);
}
private void loadInitialFragment()
{
Fragment initialFragment = Fragment1.newInstance();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, initialFragment);
fragmentTransaction.commit();
}
private void performTransition()
{
if (isDestroyed())
{
return;
}
Fragment previousFragment = mFragmentManager.findFragmentById(R.id.fragment_container);
Fragment nextFragment = Fragment2.newInstance();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
// 1. Exit for Previous Fragment
Fade exitFade = new Fade();
exitFade.setDuration(FADE_DEFAULT_TIME);
previousFragment.setExitTransition(exitFade);
// 2. Shared Elements Transition
TransitionSet enterTransitionSet = new TransitionSet();
enterTransitionSet.addTransition(TransitionInflater.from(this).inflateTransition(android.R.transition.move));
enterTransitionSet.setDuration(MOVE_DEFAULT_TIME);
enterTransitionSet.setStartDelay(FADE_DEFAULT_TIME);
nextFragment.setSharedElementEnterTransition(enterTransitionSet);
// 3. Enter Transition for New Fragment
Fade enterFade = new Fade();
enterFade.setStartDelay(MOVE_DEFAULT_TIME + FADE_DEFAULT_TIME);
enterFade.setDuration(FADE_DEFAULT_TIME);
nextFragment.setEnterTransition(enterFade);
View logo = ButterKnife.findById(this, R.id.fragment1_logo);
fragmentTransaction.addSharedElement(logo, logo.getTransitionName());
fragmentTransaction.replace(R.id.fragment_container, nextFragment);
fragmentTransaction.commitAllowingStateLoss();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment