如何在按下活动时覆盖共享元素平滑过渡?

时间:2018-10-09 17:11:05

标签: java android android-animation onbackpressed

我已经从列表活动开始了一个细节活动,并且使用ActivityCompat.startActivity()对两个共享元素进行了动画处理,很明显地,当该活动的onBackPressed()被称为平滑过渡时,就会被颠倒。

但是在我看来,这会带来问题; details活动利用滑动手势来逐一浏览listItem。当用户要返回时,平滑过渡会为错误的图像和标题添加动画效果,最后替换该行的实际图像和标题,这根本不会产生平滑过渡。

如果位置与原始单击位置不同,则在调用onBackPressed()时,我尝试使用替换的fadeIn \ fadeOut动画进行活动,但是调用super.onBackPressed()并不能解决问题。 / p>

这是方法:

   @Override
public void onBackPressed() {
    if (originalPosition != positionInParentList) {
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        return;
    }
    super.onBackPressed();
}

2 个答案:

答案 0 :(得分:0)

替换语句的顺序,将super.onBackPressed();置于if语句上方。

答案 1 :(得分:0)

尝试一下:

@Override
public void onBackPressed() {
    super.onBackPressed();
    if (originalPositionInParentList == positionInParentList) {
        return;
    }
    overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}