使用ActionBar后退按钮时共享元素转换

时间:2016-06-08 22:09:25

标签: android

我正在使用以下代码在两个活动之间设置动画元素:

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());

当我使用手机的后退按钮返回初始活动时,这非常有用,但是当我使用操作栏中的后退按钮时,过渡动画不再存在。我有任何解决方法吗?

问题可以在下面的剪辑中看到,第一次使用手机屏幕后退按钮,第二次使用后退按钮形成操作栏。

https://www.youtube.com/watch?v=Wtdcw2fGBTg

2 个答案:

答案 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.