@Override public boolean onTransition(Context context, FragmentTransaction transaction, Fragment exit, Fragment enter) { if (!(enter instanceof GalleryListScene) && !(enter instanceof DownloadsScene) && !(enter instanceof FavoritesScene) && !(enter instanceof HistoryScene)) { return false; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { exit.setSharedElementReturnTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); exit.setExitTransition( TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); enter.setSharedElementEnterTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); enter.setEnterTransition( TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); transaction.addSharedElement(mThumb, mThumb.getTransitionName()); } return true; } }
@Override public boolean onTransition(Context context, FragmentTransaction transaction, Fragment exit, Fragment enter) { if (mThumb == null || !(enter instanceof GalleryDetailScene)) { return false; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { exit.setSharedElementReturnTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); exit.setExitTransition( TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); enter.setSharedElementEnterTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); enter.setEnterTransition( TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); transaction.addSharedElement(mThumb, mThumb.getTransitionName()); } return true; } }
@SafeVarargs private static @NonNull FragmentTransaction replaceFragment_internal( @NonNull FragmentManager supportFragmentManager, @IdRes int fragmentContainer, @NonNull Fragment newFragment, Pair<View, String>... sharedViews) { newFragment = findFragment(supportFragmentManager, newFragment, null); FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) for (Pair<View, String> sharedView : sharedViews) if (sharedView != null) fragmentTransaction.addSharedElement(sharedView.first, sharedView.second); fragmentTransaction.replace(fragmentContainer, newFragment, newFragment.getClass().getName()); return fragmentTransaction; }
public void showPhoto(View sharedView, String sharedName) { Fragment listFragment = getSupportFragmentManager().findFragmentById(R.id.frame); Fragment detailFragment = new SecondFragment(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { listFragment.setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_transform)); listFragment.setExitTransition(TransitionInflater.from(this) .inflateTransition(android.R.transition.explode)); detailFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_transform)); detailFragment.setEnterTransition(TransitionInflater.from(this) .inflateTransition(android.R.transition.explode)); } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.addSharedElement(sharedView, sharedName); transaction.replace(R.id.frame, detailFragment); transaction.addToBackStack("viewer"); transaction.commit();
@Override public void onClick(View v) { SimpleFragmentB simpleFragmentB = SimpleFragmentB.newInstance(); getFragmentManager() .beginTransaction() .addSharedElement(imageView, ViewCompat.getTransitionName(imageView)) .addToBackStack(TAG) .replace(R.id.content, simpleFragmentB) .commit(); } });
@Override public void onClick(View v) { PicassoFragmentB simpleFragmentB = PicassoFragmentB.newInstance(); getFragmentManager() .beginTransaction() .addSharedElement(imageView, ViewCompat.getTransitionName(imageView)) .addToBackStack(TAG) .replace(R.id.content, simpleFragmentB) .commit(); } });
@Override public void onClick(View v) { GlideFragmentB simpleFragmentB = GlideFragmentB.newInstance(); getFragmentManager() .beginTransaction() .addSharedElement(imageView, ViewCompat.getTransitionName(imageView)) .addToBackStack(TAG) .replace(R.id.content, simpleFragmentB) .commit(); } });
@Override public void onAnimalItemClick(int pos, AnimalItem animalItem, ImageView sharedImageView) { Fragment animalDetailFragment = AnimalDetailFragment.newInstance(animalItem, ViewCompat.getTransitionName(sharedImageView)); getFragmentManager() .beginTransaction() .addSharedElement(sharedImageView, ViewCompat.getTransitionName(sharedImageView)) .addToBackStack(TAG) .replace(R.id.content, animalDetailFragment) .commit(); } }
@Override public void onAnimalItemClick(int pos, AnimalItem animalItem, ImageView sharedImageView) { Fragment animalViewPagerFragment = AnimalViewPagerFragment.newInstance(pos, Utils.generateAnimalItems(getContext())); getFragmentManager() .beginTransaction() .addSharedElement(sharedImageView, ViewCompat.getTransitionName(sharedImageView)) .addToBackStack(TAG) .replace(R.id.content, animalViewPagerFragment) .commit(); } }
@Override public void onClick(View v) { BigIconFragment bigIconFragment=new BigIconFragment(); bigIconFragment.setSharedElementEnterTransition(new ChangeBounds()); bigIconFragment.setEnterTransition(new Slide(Gravity.RIGHT)); getFragmentManager().beginTransaction() .replace(R.id.container_fragment,bigIconFragment) .addToBackStack(null) .addSharedElement(shared_small_circle,"shared_circle_") .commit(); } });
@Override public void applyBeforeFragmentTransactionExecuted(FragmentTransaction transaction, Fragment enteringFragment, Fragment exitingFragment) { enteringFragment.setEnterTransition(mEnterTransition); exitingFragment.setExitTransition(mExitTransition); enteringFragment.setSharedElementEnterTransition(mSharedElementTransition); enteringFragment.setAllowEnterTransitionOverlap(mAllowEnterTransitionOverlap); if (mSharedElements != null) { for (Pair<View, String> sharedElement : mSharedElements) { transaction.addSharedElement(sharedElement.first, sharedElement.second); } } }
@TargetApi(21) public static void navigateToArtist(Activity context, long artistID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = ArtistDetailFragment.newInstance(artistID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = ArtistDetailFragment.newInstance(artistID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); }
public void navigateToMovieDetailFragment(View sharedImageView, int movieId) { MovieDetailFragment fragment = MovieDetailFragment.create(movieId); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { fragment.setSharedElementEnterTransition(new DetailsTransition()); fragment.setEnterTransition(new Fade()); fragment.setExitTransition(new Fade()); fragment.setSharedElementReturnTransition(new DetailsTransition()); } fragmentManager.beginTransaction() .setReorderingAllowed(true) .addSharedElement(sharedImageView, ViewCompat.getTransitionName(sharedImageView)) .replace(containerId, fragment) .addToBackStack(null) .commitAllowingStateLoss(); } }
@TargetApi(21) public static void navigateToAlbum(Activity context, long albumID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = AlbumDetailFragment.newInstance(albumID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = AlbumDetailFragment.newInstance(albumID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); }
@TargetApi(21) public static void navigateToArtist(Activity context, long artistID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = ArtistDetailFragment.newInstance(artistID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = ArtistDetailFragment.newInstance(artistID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); }
private void addNextFragment(Sample sample, ImageView squareBlue, boolean overlap) { SharedElementFragment2 sharedElementFragment2 = SharedElementFragment2.newInstance(sample); Slide slide = new Slide(); slide.setDuration(getResources().getInteger(R.integer.anim_duration_medium)); ChangeBounds changeBounds = new ChangeBounds(); changeBounds.setDuration(getResources().getInteger(R.integer.anim_duration_medium)); sharedElementFragment2.setEnterTransition(slide); sharedElementFragment2.setAllowEnterTransitionOverlap(overlap); sharedElementFragment2.setAllowEnterTransitionOverlap(overlap); sharedElementFragment2.setSharedElementEnterTransition(changeBounds); getFragmentManager().beginTransaction() .replace(R.id.sample2_content,sharedElementFragment2) .addToBackStack(null) .addSharedElement(squareBlue,getString(R.string.square_blue_name)) .commit(); }
@Override public void onKittenClicked(KittenViewHolder holder, int position) { int kittenNumber = (position % 6) + 1; DetailsFragment kittenDetails = DetailsFragment.newInstance(kittenNumber); // Note that we need the API version check here because the actual transition classes (e.g. Fade) // are not in the support library and are only available in API 21+. The methods we are calling on the Fragment // ARE available in the support library (though they don't do anything on API < 21) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { kittenDetails.setSharedElementEnterTransition(new DetailsTransition()); kittenDetails.setEnterTransition(new Fade()); setExitTransition(new Fade()); kittenDetails.setSharedElementReturnTransition(new DetailsTransition()); } getActivity().getSupportFragmentManager() .beginTransaction() .addSharedElement(holder.image, "kittenImage") .replace(R.id.container, kittenDetails) .addToBackStack(null) .commit(); } }
@TargetApi(21) public static void navigateToAlbum(Activity context, long albumID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = AlbumDetailFragment.newInstance(albumID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = AlbumDetailFragment.newInstance(albumID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); }
public void transitionHideFragment(Fragment from, Fragment to, int contentAreaId, Bundle bundle, String tag, Pair<View, String> transitionViews) { if (isOpenMore()) { return; } from = checkNull(from); to = checkNull(to); transitionViews = checkNull(transitionViews); Transition imageTransition = TransitionInflater.from(this).inflateTransition(R.transition.image_transfom); mFragmentTransaction.addSharedElement(transitionViews.first, transitionViews.second); to.setSharedElementEnterTransition(imageTransition); to.setSharedElementReturnTransition(imageTransition); if (bundle != null) { to.setArguments(bundle); } if (!TextUtils.isEmpty(tag)) { mFragmentTransaction.addToBackStack(tag); } mFragmentTransaction .hide(from) .add(contentAreaId, to, tag) .commitAllowingStateLoss(); }
@Override public void onKittenClicked(KittenViewHolder holder, int position) { int kittenNumber = (position % 6) + 1; DetailsFragment kittenDetails = DetailsFragment.newInstance(kittenNumber); // Note that we need the API version check here because the actual transition classes (e.g. Fade) // are not in the support library and are only available in API 21+. The methods we are calling on the Fragment // ARE available in the support library (though they don't do anything on API < 21) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { kittenDetails.setSharedElementEnterTransition(new DetailsTransition()); kittenDetails.setEnterTransition(new Fade()); setExitTransition(new Fade()); kittenDetails.setSharedElementReturnTransition(new DetailsTransition()); } requireFragmentManager() .beginTransaction() .addSharedElement(holder.image, "kittenImage") .replace(R.id.navigation_content, kittenDetails, kittenDetails.getSceneId()/*important*/) .addToBackStack(kittenDetails.getSceneId()/*important*/) .commit(); }