每当我搜索时,我都会遇到{android 1(L)活动转换仅在API >= 21
上提供。
这很好,但我可以看到一些应用程序,如QuickPic
和google inbox
使用类似的转换,也使用较低的api,所以这个应用程序如何做这样的事情?
我做了什么?
1)很多搜索:)
2)玩ActivityOptionsCompat
仅适用于api> = 21,如下所示:
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());
编辑(问题标记为重复):在这种情况下,它与其他问题不同,因为我说有其他应用程序在较低的api中执行此转换,我想知道他们是如何做到的。
答案 0 :(得分:38)
我们在Lollipop中添加了很多东西,以使Activity Transitions运行良好。可以手动执行“活动转换”(在早期版本中),但在某些情况下会遇到问题,并且返回转换可能仅在最简单的情况下才起作用。 Chet Haase对此here有一个devbyte。
片段之间的动画可能更早,尽管API并不像Lollipop的片段转换那样易于使用。
我们考虑过很多关于在支持库中将转换移植到早期版本的问题。它可能仍然会发生。如果是这样,我们也应该能够为Fragment Transitions做点什么。
答案 1 :(得分:22)
就像你自己说的那样,支持库不支持5.0以下Android版本的(全部)转换。但是有一些替代方案:
非官方兼容性库
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/以及SDK示例文件夹中的示例。