要解决这个问题,我建议您查看android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation()。
这是我记得的代码中的 sn-ps:
我有ActivityA,其中包含一个EditTextA。
EditTextA 有一个View.OnClickListener:
View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityB.launch(getActivity(), view);
}
}
调用时调用静态方法:ActivityB.launch(Activity a, View transitionView):
public static void launch(Activity activity, View transitionView) {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
activity, transitionView, EXTRA_TRANSITION_VIEW);
Intent intent = new Intent(activity, ActivityB.class);
ActivityCompat.startActivity(activity, intent, options.toBundle());
}
上面的代码基本上是创建一个Intent 来启动ActivityB。 Intent 还包括一个 Bundle (options.toBundle()),它有很多东西,包括从 ActivityA 转换到 ActivityB 的视图。就我而言,这是EditTextA。
在ActivityB.onCreate() 中,我们需要做的就是将该视图“连接”到它正在转换到的新视图。所以在我的例子中,EditTextA 正在过渡到另一个 EditTextB,它住在 ActivityB。
ActivityB.onCreate() {
....
mEditTextB = (EditText) findByViewId(...);
ViewCompat.setTransitionName(mEditTextB, EXTRA_TRANSITION_VIEW);
}
如果我没记错的话应该是它:)。