Created
February 17, 2017 15:51
-
-
Save cthulhuplush/cbc46d00549c1b5eaf1df1776fed434c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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