我正在使用以下代码在两个活动之间设置动画元素:
Pair<View, String> pair1 = Pair.create(sharedView, transitionName);
Pair<View, String> pair2 = Pair.create(sharedBackgroundView, transitionBackgroundName);
ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, pair1, pair2);
startActivity(myIntent, transitionActivityOptions.toBundle());
当我使用手机的后退按钮返回初始活动时,这非常有用,但是当我使用操作栏中的后退按钮时,过渡动画不再存在。我有任何解决方法吗?
问题可以在下面的剪辑中看到,第一次使用手机屏幕后退按钮,第二次使用后退按钮形成操作栏。
答案 0 :(得分:2)
拦截点击主页按钮并调用超级onBackPressed()
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onClickHome();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
protected void onClickHome() {
super.onBackPressed();
}
答案 1 :(得分:2)
这是我使用的更好的解决方案。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finishAfterTransition();
return true;
}
return false;
}
注意: finishAfterTransition()
调用需要最低API级别21.