private void scheduleRemoveTargets(@NonNull final Transition overallTransition, @Nullable final Transition enterTransition, @Nullable final List<View> enteringViews, @Nullable final Transition exitTransition, @Nullable final List<View> exitingViews, @Nullable final Transition sharedElementTransition, @Nullable final List<View> toSharedElements) { overallTransition.addListener(new TransitionListener() { @Override public void onTransitionStart(Transition transition) { if (enterTransition != null && enteringViews != null) { TransitionUtils.replaceTargets(enterTransition, enteringViews, null); } if (exitTransition != null && exitingViews != null) { TransitionUtils.replaceTargets(exitTransition, exitingViews, null); } if (sharedElementTransition != null && toSharedElements != null) { TransitionUtils.replaceTargets(sharedElementTransition, toSharedElements, null); } } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); }
@Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); animateRevealShow(); }
@Override @NonNull protected Transition getTransition(@NonNull final ViewGroup container, @Nullable final View from, @Nullable final View to, boolean isPush) { Transition backgroundFade = new Fade(); backgroundFade.addTarget(R.id.dialog_background); Transition fabTransform = new FabTransform(ContextCompat.getColor(container.getContext(), R.color.colorAccent), R.drawable.ic_github_face); TransitionSet set = new TransitionSet(); set.addTransition(backgroundFade); set.addTransition(fabTransform); return set; }
public static void replaceTargets(@NonNull Transition transition, @NonNull List<View> oldTargets, @Nullable List<View> newTargets) { if (transition instanceof TransitionSet) { TransitionSet set = (TransitionSet) transition; int numTransitions = set.getTransitionCount(); for (int i = 0; i < numTransitions; i++) { Transition child = set.getTransitionAt(i); replaceTargets(child, oldTargets, newTargets); } } else if (!TransitionUtils.hasSimpleTarget(transition)) { List<View> targets = transition.getTargets(); if (targets != null && targets.size() == oldTargets.size() && targets.containsAll(oldTargets)) { final int targetCount = newTargets == null ? 0 : newTargets.size(); for (int i = 0; i < targetCount; i++) { transition.addTarget(newTargets.get(i)); } for (int i = oldTargets.size() - 1; i >= 0; i--) { transition.removeTarget(oldTargets.get(i)); } } } }
public static void addTargets(@Nullable Transition transition, @NonNull List<View> views) { if (transition == null) { return; } if (transition instanceof TransitionSet) { TransitionSet set = (TransitionSet) transition; int numTransitions = set.getTransitionCount(); for (int i = 0; i < numTransitions; i++) { Transition child = set.getTransitionAt(i); addTargets(child, views); } } else if (!hasSimpleTarget(transition)) { List<View> targets = transition.getTargets(); if (isNullOrEmpty(targets)) { int numViews = views.size(); for (int i = 0; i < numViews; i++) { transition.addTarget(views.get(i)); } } } }
@Nullable @Override public Transition getSharedElementTransition(@NonNull ViewGroup container, @Nullable final View from, @Nullable View to, boolean isPush) { Transition transition = new TransitionSet().addTransition(new ChangeBounds()).addTransition(new ChangeClipBounds()).addTransition(new ChangeTransform()); transition.setPathMotion(new ArcMotion()); // The framework doesn't totally fade out the "from" shared element, so we'll hide it manually once it's safe. transition.addListener(new TransitionListener() { @Override public void onTransitionStart(Transition transition) { if (from != null) { for (String name : sharedElementNames) { View namedView = TransitionUtils.findNamedView(from, name); if (namedView != null) { namedView.setVisibility(View.INVISIBLE); } } } } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); return transition; }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void setupEnterAnimation() { Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.change_bounds_with_arc); transition.setDuration(300); getWindow().setSharedElementEnterTransition(transition); transition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); }
mRectToCircleTransition.addTarget(this); mRectToCircleTransition.addListener(new TransitionAdapter() { @Override public void onTransitionStart(Transition transition) { mCircleToRectTransition.addTarget(this); mCircleToRectTransition.addListener(new TransitionAdapter() { @Override public void onTransitionStart(Transition transition) {
transition.setStartDelay(200); transition.addListener(new Transition.TransitionListener() {
public void setupTransitions() { // Add shared element transition animation if on Lollipop or later if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Enter transitions TransitionSet setEnter = new TransitionSet(); Transition slideDown = new Explode(); slideDown.addTarget(headerView); slideDown.excludeTarget(scrollView, true); slideDown.setDuration(500); setEnter.addTransition(slideDown); Transition fadeOut = new Slide(Gravity.BOTTOM); fadeOut.addTarget(scrollView); fadeOut.setDuration(500); setEnter.addTransition(fadeOut); // Exit transitions TransitionSet setExit = new TransitionSet(); Transition slideDown2 = new Explode(); slideDown2.addTarget(headerView); slideDown2.setDuration(570); setExit.addTransition(slideDown2); Transition fadeOut2 = new Slide(Gravity.BOTTOM); fadeOut2.addTarget(scrollView); fadeOut2.setDuration(280); setExit.addTransition(fadeOut2); getWindow().setEnterTransition(setEnter); getWindow().setReturnTransition(setExit); } }
public TransitionBuilder duration(long duration) { transition.setDuration(duration); return this; }
// above I've gotten the sharedElements (Views)... newSharedElement.setTransitionName("sharedProperty"); oldSharedElement.setTransitionName("sharedProperty"); // having android:transitionName in the xml can be easier // This transition handles the shared element move based on the shared tansition name Transition shared = TransitionInflater.from(context).inflateTransition(android.R.transition.move); shared.addTarget(newSharedElement); // create a scene container is a parentView (FrameLayout) of both children Scene scene = new Scene(container, newChild); // everything else is set to Fade, shared element is excluded Transition fade = TransitionInflater.from(context).inflateTransition(android.R.transition.fade); fade.excludeTarget(newSharedElement, true); // combine the translations TransitionSet set = new TransitionSet(); set.addTransition(shared).addTransition(fade); // translationize TransitionManager.go(scene, set);
@Override public void onClick(View view) { Intent intent = new Intent(context, ViewActivity.class); intent.putExtra("NOTIFICATION_ID", reminderList.get(viewHolder.getAdapterPosition()).getId()); // Add shared element transition animation if on Lollipop or later if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { CardView cardView = (CardView) view.findViewById(R.id.notification_card); TransitionSet setExit = new TransitionSet(); Transition transition = new Fade(); transition.excludeTarget(android.R.id.statusBarBackground, true); transition.excludeTarget(android.R.id.navigationBarBackground, true); transition.excludeTarget(R.id.fab_button, true); transition.excludeTarget(R.id.recycler_view, true); transition.setDuration(400); setExit.addTransition(transition); ((Activity) context).getWindow().setSharedElementsUseOverlay(false); ((Activity) context).getWindow().setReenterTransition(null); ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(((Activity) context), cardView, "cardTransition"); ActivityCompat.startActivity(((Activity) context), intent, options.toBundle()); ((RecyclerListener) context).hideFab(); } else { context.startActivity(intent); } } });
Transition ts = new Explode(); //Slide(); //Explode(); ts.setStartDelay(2000); ts.setDuration(5000);
public TransitionBuilder excludeTarget(final View view, final boolean exclude){ transition.excludeTarget(view, exclude); return this; }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void setupEnterAnimation() { Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.change_bounds_with_arc); transition.setDuration(300); getWindow().setSharedElementEnterTransition(transition); transition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); }
public void setDuration(long duration) { transition.setDuration(duration); }
for (SharedViews.SharedView sharedView : sharedViews.getSharedViews()) { if (sharedView.getViewId() != 0) { fadeTransition.excludeTarget(sharedView.getViewId(), true); transformTransition.addTarget(sharedView.getViewId()); } else { String name = "shared-" + Long.toString(RANDOM.nextLong()); log.error("Unexpected SharedView configuration."); fadeTransition.excludeTarget(name, true); transformTransition.addTarget(name);
public TransitionBuilder excludeTarget(final String targetName, final boolean exclude) { transition.excludeTarget(targetName, exclude); return this; }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private boolean addTransitionListener() { transition = getWindow().getSharedElementEnterTransition(); if (transition != null) { transition.addListener(new OnTransitionListener(){ @Override public void onTransitionEnd(Transition transition) { super.onTransitionEnd(transition); videoPlayer.startPlayLogic(); transition.removeListener(this); } }); return true; } return false; }