public static void removeTargets(Object transitionObject, ArrayList<View> views) { Transition transition = (Transition) transitionObject; int i; if (transition instanceof TransitionSet) { TransitionSet set = (TransitionSet) transition; int numTransitions = set.getTransitionCount(); for (i = 0; i < numTransitions; i++) { removeTargets(set.getTransitionAt(i), views); } } else if (!hasSimpleTarget(transition)) { List<View> targets = transition.getTargets(); if (targets != null && targets.size() == views.size() && targets.containsAll(views)) { for (i = views.size() - 1; i >= 0; i--) { transition.removeTarget((View) views.get(i)); } } } }
public static void addTargets(Object transitionObject, ArrayList<View> views) { Transition transition = (Transition) transitionObject; int i; if (transition instanceof TransitionSet) { TransitionSet set = (TransitionSet) transition; int numTransitions = set.getTransitionCount(); for (i = 0; i < numTransitions; i++) { addTargets(set.getTransitionAt(i), views); } } else if (!hasSimpleTarget(transition) && isNullOrEmpty(transition.getTargets())) { int numViews = views.size(); for (i = 0; i < numViews; i++) { transition.addTarget((View) views.get(i)); } } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= 21) getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); setContentView(R.layout.activity_window_transitions_second); Transition transition = TransitionInflater .from(this) // .inflateTransition(R.transition.explode); /* 爆炸效果 */ // .inflateTransition(R.transition.fade); /* 淡化效果 */ .inflateTransition(R.transition.slide); /* 滑动效果 */ /* 退出时使用 */ getWindow().setExitTransition(transition); /* 第一次进入时使用 */ getWindow().setEnterTransition(transition); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= 21) getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); setContentView(R.layout.activity_window_transitions); Transition transition = TransitionInflater .from(this) .inflateTransition(R.transition.explode); /* 爆炸效果 */ // .inflateTransition(R.transition.fade); /* 淡化效果 */ // .inflateTransition(R.transition.slide); /* 滑动效果 */ /* 退出时使用 */ getWindow().setExitTransition(transition); /* 再次进入时使用 */ getWindow().setReenterTransition(transition); /* 第一次进入时使用 */ getWindow().setEnterTransition(transition); }
static void applyTransitionToWindow(@NonNull final Window window, @NonNull final Transition transition, boolean enter, boolean retun, boolean reenter, boolean exit, boolean overlap) { window.setAllowEnterTransitionOverlap(overlap); window.setAllowReturnTransitionOverlap(overlap); if (enter) { window.setEnterTransition(transition); } if (reenter) { window.setReenterTransition(transition); } if (exit) { window.setExitTransition(transition); } if (retun) { window.setReturnTransition(transition); } }
@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(); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private TransitionSet constructTransitions() { int[] slideTargets = {R.id.ChatRecyclerView, R.id.chat_input, R.id.chat_input_divider}; Transition slideTransition = new Slide(Gravity.BOTTOM); Transition fadeTransition = new Fade(); for (int slideTarget : slideTargets) { slideTransition.addTarget(slideTarget); fadeTransition.excludeTarget(slideTarget, true); } TransitionSet set = new TransitionSet(); set.addTransition(slideTransition); set.addTransition(fadeTransition); return set; }
@SuppressLint("RtlHardcoded") private TransitionAnimation createSlideAnimation(boolean forward, AnimationData animationData) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Transition enterTransition = forward ? new Slide(Gravity.RIGHT) : new Slide(Gravity.LEFT); Transition exitTransition = forward ? new Slide(Gravity.LEFT) : new Slide(Gravity.RIGHT); LollipopTransitionAnimation animation = new LollipopTransitionAnimation(enterTransition, exitTransition); animation.setAllowEnterTransitionOverlap(false); Fragment currentFragment = mActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_container); if (currentFragment instanceof SharedElementProvider) { SharedElementProvider sharedElementProvider = (SharedElementProvider) currentFragment; View sharedElement = sharedElementProvider.getSharedElement(animationData); String shareElementName = sharedElementProvider.getSharedElementName(animationData); animation.addSharedElement(sharedElement, shareElementName); Transition moveTransition = TransitionInflater.from(mActivity).inflateTransition(android.R.transition.move); moveTransition.setDuration(600); animation.setSharedElementTransition(moveTransition); } return animation; } else { int enterAnimRes = forward ? R.anim.slide_in_right : R.anim.slide_in_left; int exitAnimRes = forward ? R.anim.slide_out_left : R.anim.slide_out_right; return new SimpleTransitionAnimation(enterAnimRes, exitAnimRes); } }
private void windowTransition() { getWindow().getEnterTransition().addListener(new TransitionAdapter(){ @Override public void onTransitionEnd(Transition transition) { mAddButton.animate().alpha(1.0f); getWindow().getEnterTransition().removeListener(this); } }); }
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); } }
void updateLinkText(String link) { linkTextView.setText(link); Transition transition = new AutoTransition() .setDuration(500) .setStartDelay(300) .setInterpolator(new AccelerateDecelerateInterpolator()); TransitionManager.beginDelayedTransition(rootView, transition); linkTextView.setVisibility(View.VISIBLE); }
public void setSceneTransitionAnimation() { if (Build.VERSION.SDK_INT < 21) return; Transition slide = new Slide(Gravity.RIGHT); slide.excludeTarget(android.R.id.statusBarBackground, true); slide.excludeTarget(android.R.id.navigationBarBackground, true); Window window = getWindow(); window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); window.setExitTransition(slide); window.setEnterTransition(slide); window.setTransitionBackgroundFadeDuration(getResources() .getInteger(android.R.integer.config_longAnimTime)); window.setBackgroundDrawableResource(android.R.color.transparent); }
@Override public void onTransitionStart(@NonNull Transition transition) { //hide toolbar & statusbar float toolbar_translationY = -(toolbar.getHeight()); float bottomBar_translationY = ((View) bottomBar.getParent()).getHeight(); toolbar.setTranslationY(toolbar_translationY); ((View) bottomBar.getParent()).setTranslationY(bottomBar_translationY); super.onTransitionStart(transition); }
private void setEnter() { enterTransitionListener = new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { loadWallpaper(image); } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }; getWindow().getEnterTransition().addListener(enterTransitionListener); }
/** * 共享元素 */ private void changeToConfirmScene() { final LayoutOrderConfirmationBinding confBinding = prepareConfirmationBinding(); final Scene scene = new Scene(binding.content, ((ViewGroup) confBinding.getRoot())); scene.setEnterAction(onEnterConfirmScene(confBinding)); final Transition transition = TransitionInflater.from(getContext()) .inflateTransition(R.transition.transition_confirmation_view); TransitionManager.go(scene, transition); }
@Override @NonNull protected Transition getTransition(@NonNull ViewGroup container, View from, View to, boolean isPush) { TransitionSet transition = new TransitionSet() .setOrdering(TransitionSet.ORDERING_SEQUENTIAL) .addTransition(new Fade(Fade.OUT)) .addTransition(new TransitionSet().addTransition(new ChangeBounds()).addTransition(new ChangeClipBounds()).addTransition(new ChangeTransform())) .addTransition(new Fade(Fade.IN)); transition.setPathMotion(new ArcMotion()); return transition; }
/** * Create and set animations for activity transition */ private void setupAnimations() { Transition activityTransition = android.transition.TransitionInflater .from(this) .inflateTransition(R.transition.main_menu_exit_transition); getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS); getWindow().setEnterTransition(activityTransition); getWindow().setReturnTransition(activityTransition); getWindow().setExitTransition(activityTransition); getWindow().setReenterTransition(activityTransition); }
public void toChainsDetail(ProductionChain chain, View origin) { final ChainsDetailFragment detailFragment = new ChainsDetailFragment(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { final Slide slide = new Slide(Gravity.END); slide.setDuration(333); detailFragment.setEnterTransition(slide); detailFragment.setExitTransition(slide); overviewFragment.setExitTransition(new Fade()); Transition t = TransitionInflater.from(this).inflateTransition(android.R.transition.move); detailFragment.setSharedElementEnterTransition(t); detailFragment.setSharedElementReturnTransition(t); } final Bundle bundle = new Bundle(); bundle.putString(GameActivity.BUNDLE_CHAIN_KEY, gson.toJson(chain)); detailFragment.setArguments(bundle); getSupportFragmentManager() .beginTransaction() .replace(R.id.game_activity_parent, detailFragment) .addToBackStack(null) .addSharedElement(origin, ViewCompat.getTransitionName(origin)) .commit(); getSupportFragmentManager().executePendingTransactions(); }
public static Object mergeTransitions(Object enterTransitionObject, Object exitTransitionObject, Object sharedElementTransitionObject, boolean allowOverlap) { boolean overlap = true; Transition enterTransition = (Transition) enterTransitionObject; Transition exitTransition = (Transition) exitTransitionObject; Transition sharedElementTransition = (Transition) sharedElementTransitionObject; if (!(enterTransition == null || exitTransition == null)) { overlap = allowOverlap; } if (overlap) { Transition transitionSet = new TransitionSet(); if (enterTransition != null) { transitionSet.addTransition(enterTransition); } if (exitTransition != null) { transitionSet.addTransition(exitTransition); } if (sharedElementTransition != null) { transitionSet.addTransition(sharedElementTransition); } return transitionSet; } Transition staggered = null; if (exitTransition != null && enterTransition != null) { staggered = new TransitionSet().addTransition(exitTransition).addTransition(enterTransition).setOrdering(1); } else if (exitTransition != null) { staggered = exitTransition; } else if (enterTransition != null) { staggered = enterTransition; } if (sharedElementTransition == null) { return staggered; } Transition together = new TransitionSet(); if (staggered != null) { together.addTransition(staggered); } together.addTransition(sharedElementTransition); return together; }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); postponeEnterTransition(); Transition transition = TransitionInflater.from(getContext()) .inflateTransition(android.R.transition.move); // transition.setDuration(getResources().getInteger(R.integer.anim_duration)); setSharedElementEnterTransition(transition); if (getArguments() != null) { mEvent = getArguments().getParcelable(EVENT_PARAM); } viewModel = ViewModelProviders.of(this).get(ChaosflixViewModel.class); }
public static Object wrapSharedElementTransition(Object transitionObj) { if (transitionObj == null) { return null; } Transition transition = (Transition) transitionObj; if (transition == null) { return null; } Object transitionSet = new TransitionSet(); transitionSet.addTransition(transition); return transitionSet; }
public static void cleanupTransitions(View sceneRoot, View nonExistentView, Object enterTransitionObject, ArrayList<View> enteringViews, Object exitTransitionObject, ArrayList<View> exitingViews, Object sharedElementTransitionObject, ArrayList<View> sharedElementTargets, Object overallTransitionObject, ArrayList<View> hiddenViews, Map<String, View> renamedViews) { final Transition enterTransition = (Transition) enterTransitionObject; final Transition exitTransition = (Transition) exitTransitionObject; final Transition sharedElementTransition = (Transition) sharedElementTransitionObject; final Transition overallTransition = (Transition) overallTransitionObject; if (overallTransition != null) { final View view = sceneRoot; final ArrayList<View> arrayList = enteringViews; final ArrayList<View> arrayList2 = exitingViews; final ArrayList<View> arrayList3 = sharedElementTargets; final Map<String, View> map = renamedViews; final ArrayList<View> arrayList4 = hiddenViews; final View view2 = nonExistentView; sceneRoot.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { public boolean onPreDraw() { view.getViewTreeObserver().removeOnPreDrawListener(this); if (enterTransition != null) { FragmentTransitionCompat21.removeTargets(enterTransition, arrayList); } if (exitTransition != null) { FragmentTransitionCompat21.removeTargets(exitTransition, arrayList2); } if (sharedElementTransition != null) { FragmentTransitionCompat21.removeTargets(sharedElementTransition, arrayList3); } for (Entry<String, View> entry : map.entrySet()) { ((View) entry.getValue()).setTransitionName((String) entry.getKey()); } int numViews = arrayList4.size(); for (int i = 0; i < numViews; i++) { overallTransition.excludeTarget((View) arrayList4.get(i), false); } overallTransition.excludeTarget(view2, false); return true; } }); } }
private void setupWindowAnimations() { Transition transition; if (type == TYPE_PROGRAMMATICALLY) { transition = buildEnterTransition(); } else { transition = TransitionInflater.from(this).inflateTransition(R.transition.slide_from_bottom); } getWindow().setEnterTransition(transition); }
public static Object cloneTransition(Object transition) { if (transition != null) { return ((Transition) transition).clone(); } return transition; }
@Override public void onTransitionCancel(Transition transition) { // no-op }
@Override public void onTransitionPause(Transition transition) { // no-op }
@Override public void onTransitionResume(Transition transition) { // no-op }
@Override public void onTransitionEnd(Transition transition) { setExitSharedElementCallback(null); }
public static void beginDelayedTransition(ViewGroup sceneRoot, Object transitionObject) { TransitionManager.beginDelayedTransition(sceneRoot, (Transition) transitionObject); }
@RequiresApi(api = Build.VERSION_CODES.M) public <T extends EasyPopup> T setEnterTransition(Transition enterTransition) { this.mEnterTransition = enterTransition; return (T) this; }
@RequiresApi(api = Build.VERSION_CODES.M) public <T extends EasyPopup> T setExitTransition(Transition exitTransition) { this.mExitTransition = exitTransition; return (T) this; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Declare a new thread to do a preference check. Library to invoke Intro slides Thread t = new Thread(new Runnable() { @Override public void run() { // Initialize SharedPreferences SharedPreferences getPrefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); // Create a new boolean and preference and set it to true boolean isFirstStart = getPrefs.getBoolean("firstStart", true); // If the activity has never started before... if (isFirstStart) { // Launch app intro Intent i = new Intent(HomeActivity.this, IntroActivity.class); startActivity(i); // Make a new preferences editor SharedPreferences.Editor e = getPrefs.edit(); // Edit preference to make it false because we don't want this to run again e.putBoolean("firstStart", false); // Apply changes e.apply(); } else { // Launch Mainactivity // Intent intent = new Intent(getApplicationContext(), MainActivity.class); // intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); // startActivity(intent); // mActivity=true; } } }); // Start the thread t.start(); if (Build.VERSION.SDK_INT >= 21) { TransitionInflater inflater = TransitionInflater.from(this); Transition transition = inflater.inflateTransition(R.transition.details_window_enter_transition); getWindow().setExitTransition(transition); } // setUpWindowAnimations(); setContentView(R.layout.activity_home); ButterKnife.bind(this); setupFind(); // Obtain the FirebaseAnalytics instance. mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); //Sets whether analytics collection is enabled for this app on this device. mFirebaseAnalytics.setAnalyticsCollectionEnabled(true); if (savedInstanceState == null) { NewsFragment fragment = new NewsFragment(); fragment.setArguments(null); getSupportFragmentManager().beginTransaction() .replace(R.id.container, fragment, "") .commit(); } NewsSyncUtils.initialize(this); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void setUpTransitionAnimation() { Transition transition = TransitionInflater.from(activity) .inflateTransition(R.transition.arc_motion); activity.getWindow().setSharedElementReenterTransition(transition); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void setUpTransitionAnimation() { Transition transition = TransitionInflater.from(getActivity()) .inflateTransition(R.transition.arc_motion); getActivity().getWindow().setSharedElementReenterTransition(transition); }
@Override public void onTransitionStart(Transition transition) { }
@Override public void onTransitionEnd(Transition transition) { }