32

每次我搜索时,我都会遇到这个“android 5(L) 活动转换仅适用于API >= 21.

很好,但我可以看到一些类似的应用程序QuickPicgoogle 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 中进行此转换,我想知道他们是如何做到的。

4

2 回答 2

38

我们在 Lollipop 中添加了很多东西以使 Activity Transitions 能够正常工作。可以手动进行活动转换(在早期版本中),但在某些情况下您会遇到问题,并且返回转换可能仅在最简单的情况下起作用。Chet Haase 在这里有一个开发字节。

片段之间的动画在早期是可能的,尽管 API 不像在 Lollipop 的片段转换中那样容易使用。

我们在支持库中考虑了很多关于将转换反向移植到早期版本的问题。它可能仍然会发生。如果是这样,我们也应该能够为 Fragment Transitions 做点什么。

于 2014-12-08T01:47:48.733 回答
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 示例文件夹中找到的示例。

于 2014-12-07T15:55:01.780 回答