共享元素转场动画中,可以使用setStartDelay(long startDelay)方法来设置开始动画的延迟时间。但是,这会导致共享元素在开始动画之前消失或者在目标Activity中的元素显示不完整。为了避免这种情况,可以在onActivityReenter()方法中使用postponeEnterTransition()方法来推迟进入目标Activity的动画,并在目标Activity中onCreate()方法中调用startPostponedEnterTransition()方法来开始进入动画。
代码示例:
//在源Activity中的onCreate()方法中 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //设置共享元素进入动画的监听器 setEnterSharedElementCallback(new MyCallback()); }
//进入目标Activity时的回调函数 @Override public void onActivityReenter(int resultCode, Intent data) { super.onActivityReenter(resultCode, data); //postponeEnterTransition()方法可以推迟进入目标Activity的动画 postponeEnterTransition(); //设置共享元素进入动画的监听器 setEnterSharedElementCallback(new MyCallback()); }
//在目标Activity中的onCreate()方法中 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); //开始进入动画 startPostponedEnterTransition(); }
//共享元素转场动画的监听器
private class MyCallback extends SharedElementCallback {
@Override
public void onMapSharedElements(List