Transition fade = new Fade(); fade.excludeTarget(android.R.id.statusBarBackground, true); fade.excludeTarget(android.R.id.navigationBarBackground, true); getWindow().setExitTransition(fade); getWindow().setEnterTransition(fade);
@Override @Nullable public Transition getSharedElementTransition(@NonNull ViewGroup container, @Nullable View from, @Nullable View to, boolean isPush) { return new TransitionSet().addTransition(new ChangeBounds()).addTransition(new ChangeClipBounds()).addTransition(new ChangeTransform()); }
@NonNull public static TransitionSet mergeTransitions(int ordering, Transition... transitions) { TransitionSet transitionSet = new TransitionSet(); for (Transition transition : transitions) { if (transition != null) { transitionSet.addTransition(transition); } } transitionSet.setOrdering(ordering); return transitionSet; }
@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; }
/** * The shared element transition to dribbble shots & dn stories can intersect with the FAB. * This can cause a strange layers-passing-through-each-other effect. On return hide the FAB * and animate it back in after the transition. */ private void setGridItemContentTransitions(View gridItem) { final View fab = host.findViewById(R.id.fab); if (!ViewUtils.viewsIntersect(gridItem, fab)) return; Transition reenter = TransitionInflater.from(host) .inflateTransition(R.transition.grid_overlap_fab_reenter); reenter.addListener(new TransitionUtils.TransitionListenerAdapter() { @Override public void onTransitionEnd(Transition transition) { // we only want these content transitions in certain cases so clear out when done. host.getWindow().setReenterTransition(null); } }); host.getWindow().setReenterTransition(reenter); }
@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; }
@Override public void onPrepared() { if (!canceled) { TransitionManager.beginDelayedTransition(container, transition); executePropertyChanges(container, from, to, transition, isPush); } } });
@Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); animateRevealShow(); }
@Override public void captureEndValues(TransitionValues transitionValues) { super.captureEndValues(transitionValues); int width = ((View) transitionValues.values.get(PROPNAME_PARENT)).getWidth(); Rect bounds = (Rect) transitionValues.values.get(PROPNAME_BOUNDS); bounds.right = width; bounds.bottom = width * 3 / 4; transitionValues.values.put(PROPNAME_BOUNDS, bounds); }
public static boolean hasSimpleTarget(@NonNull Transition transition) { return !isNullOrEmpty(transition.getTargetIds()) || !isNullOrEmpty(transition.getTargetNames()) || !isNullOrEmpty(transition.getTargetTypes()); }
@Override public void captureStartValues(TransitionValues transitionValues) { super.captureStartValues(transitionValues); final View view = transitionValues.view; if (view.getWidth() <= 0 || view.getHeight() <= 0) return; transitionValues.values.put(PROPERTY_COLOR, startColor); }
@Nullable @Override public Transition getExitTransition(@NonNull ViewGroup container, @Nullable View from, @Nullable View to, boolean isPush) { return new Fade(Fade.OUT); }
@Override public void onTransitionEnd(Transition transition) { super.onTransitionEnd(transition); videoPlayer.startPlayLogic(); transition.removeListener(this); } });
@Override public void captureEndValues(TransitionValues transitionValues) { super.captureEndValues(transitionValues); final View view = transitionValues.view; if (view.getWidth() <= 0 || view.getHeight() <= 0) { return; } transitionValues.values.put(PROPERTY_COLOR, endColor); }
@Override public void onTransitionEnd(Transition transition) { super.onTransitionEnd(transition); videoPlayer.startPlayLogic(); transition.removeListener(this); } });
@Override public void captureEndValues(TransitionValues transitionValues) { super.captureEndValues(transitionValues); final View view = transitionValues.view; if (view.getWidth() <= 0 || view.getHeight() <= 0) { return; } transitionValues.values.put(PROPERTY_COLOR, endColor); transitionValues.values.put(PROPERTY_CORNER_RADIUS, view.getHeight() / 2); }
@Override public void onTransitionEnd(Transition transition) { super.onTransitionEnd(transition); videoPlayer.startPlayLogic(); transition.removeListener(this); } });
@Override public void captureEndValues(TransitionValues transitionValues) { super.captureEndValues(transitionValues); if (!(transitionValues.view instanceof ParallaxScrimageView)) return; ParallaxScrimageView psv = ((ParallaxScrimageView) transitionValues.view); if (psv.getOffset() == 0) return; // as we're going to remove the offset (which drives the parallax) we need to // compensate for this by adjusting the target bounds. Rect bounds = (Rect) transitionValues.values.get(PROPNAME_BOUNDS); bounds.offset(0, psv.getOffset()); transitionValues.values.put(PROPNAME_BOUNDS, bounds); }