This question already has an answer here:
-
Are Activity/Fragment Transitions compatible with pre-Lollipop devices?
4 answers
Every time i search i came across this " android 5(L) activity transition only available on API >= 21
.
that's fine but i can see some app like QuickPic
and google inbox
that use similar transition and also working on lower api, so how this app can do such a thing?
what i have done?
1) a lot of search:)
2) playing with ActivityOptionsCompat
that only apply to api >= 21, like this:
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, DATA.EXTRA_PASSED_JSON);
Intent intent = new Intent(activity, PhotoViewerActivity.class);
intent.putExtra(DATA.EXTRA_PASSED_JSON, json);
ActivityCompat.startActivity(activity, intent, options.toBundle());
EDIT(question marked as duplicate): it's different from other question in this case, because i said there is other app that do this transition in lower api and i want to know how they do that.
We added a lot of stuff in Lollipop to make Activity Transitions work well. It is possible to do Activity Transitions manually (in earlier versions), but you will encounter problems in some cases and the return transition is likely going to work only in the simplest case. Chet Haase has a devbyte on this here.
Animations between fragments were possible earlier, though the API isn't as easy to use as in Lollipop's Fragment Transitions.
We thought a lot about back porting transitions to earlier versions in the support library. It may still happen. If so, we should also be able to do something for Fragment Transitions.
Like you say yourself, the support library does not support (all) transitions on Android versions below 5.0. There are however some alternatives:
Unofficial Compatibility libraries
https://github.com/andkulikov/transitions-everywhere
https://github.com/takahirom/PreLollipopTransition
https://github.com/lgvalle/Material-Animations
Android KitKat
http://www.doubleencore.com/2013/11/new-transitions-framework/ and a sample found in your SDK samples folder.