1.Activity.postponeEnterTransition()
当Activity通过makeSceneTransitionAnimation启动时,调用postponeEnterTransition方法可以推迟进入的动画和共享元素动画的播放,直到所有数据加载完以后才会执行。在此之前,Activity不会被绘制到它的Window上,Window处于透明状态。这个方法可能导致返回的动画被延迟,直到所有的数据准备好。这个方法应该在onCreate(android.os.Bundle)或onActivityReenter(int, android.content.Intent)或startPostponedEnterTransition()里调用。需要调用startPostponedEnterTransition()方法让Activity开始过渡动画。如果Activity没有调用makeSceneTransitionAnimation(Activity, android.util.Pair[])方法,postponeEnterTransition方法无效。
2.Activity.setEnterSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity,
android.view.View, String)启动Activity时,callback将会被调用,用来处理被启动Activity的共享元素,这个方法需要将Window设置成透明:Window#FEATURE_ACTIVITY_TRANSITIONS。
3.Activity.finishAfterTransition()
反转Activity(called activity)场景进入动画,并且会触发调用Activity(calling activity)反转退出动画。当退出动画完成以后,finish()方法会被调用。如果没有进场动画,finish()方法会立即被调用,同时会执行退出动画。
4.ActivityOptions.makeSceneTransitionAnimation()
创建一个ActivityOptions用来在Activity之间进行过渡动画。此方法会携带共享元素的位置来开启另一个Activity,共享元素的位置将作为退出动画的中心点。共享元素的位置将作为被启动Activity的进入动画的中心点。调用Activity和被调用Activity的Window都必须是透明的。
5.Activity.onActivityReenter
当一个Activity(called)通过过渡动画来开启,再返回开启它的Activity(calling)时,calling Activity 会调用此方法。会传一些resultCode和一些额外的数据(数据在finishAfterTransition()方法中设置,可以是一些位置信息等),方式如下。
@Override
public void finishAfterTransition() {
Intent data = new Intent();
data.putExtra(EXTRA_STARTING_ALBUM_POSITION, mStartingPosition);
data.putExtra(EXTRA_CURRENT_ALBUM_POSITION, mCurrentPosition);
setResult(RESULT_OK, data);
super.finishAfterTransition();
}
6.Activity.startPostponedEnterTransition()
如果调用了postponeEnterTransition,必须调用startPostponedEnterTransition,让Activity开始绘制。
7.Activity.setExitSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity, android.view.View, String)来启动Activity(called Activity)时,在启动的Activity(calling Activity)调用callback来处理共享元素。大多数调用会在返回calling Activity时调用。
8.Activity.setEnterSharedElementCallback(SharedElementCallback callback)
当通过ActivityOptions.makeSceneTransitionAnimation(Activity, android.view.View, String)来启动Activity(called Activity)时,在called Activity会调用callback,处理共享元素。
SharedElementCallback 抽象类常用方法为
可以在这个方法内对共享元素做一些调整。names 共享元素的名字 sharedElements,共享的view
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {}