OverridePendingTransition(INT,INT)对Onbackpressed()没有任何影响



我正在尝试编程Android的返回按钮,以在按下时具有相反的滑动效果。

我具有主动脉(a(,并按下某些东西会产生另一个主动脉(b((并以编程方式设置不同的内容(。从Main Activity(a(转变为Main Activity(b(从右侧滑入(向左向左(,这是正确的。

但是,当我单击后按钮时,它应该从左侧滑入,然后(向右( - 即。相反 - 但效果与上面相同。我想拥有按下后面的动画将上一个屏幕带回到上一个屏幕(从左侧(

这是我的代码:

@Override
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) {
    final Context thisContext = this;
    YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() {
        @Override
        public void call(Animator animator) {
            CelebritiesFragment celebritiesFragment = new CelebritiesFragment();
            celebritiesFragment.setIndex(viewHolder.index);
            CelebritiesTabViewsStack.getInstance().push(celebritiesFragment);
            Intent intent = new Intent(thisContext, MainActivity.class);
            startActivity(intent);
        }
    }).delay(0).duration(250).playOn(viewHolder.mView);
}
@Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left);
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right);
// no effect, even if I use overridePendingTransition(0, 0);
}

我猜这个问题都是同一Mainactiity类。如何解决此问题?

我总是在 onFinish方法中使用这种动画:

   public void finish() {
        super.finish();
         overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right);
    }

另外,请看一下overridePendingTransition签名,它将2个动画作为一个参数。

第一个用于传入活动的动画资源的资源ID。使用0进行无动画。最后一个是用于传出活动的动画资源的资源ID。使用0用于无动画。

经过大量实验,我自己找到了解决方案:

@Override
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) {
    final Context thisContext = this;
    YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() {
        @Override
        public void call(Animator animator) {
            CelebritiesFragment celebritiesFragment = new CelebritiesFragment();
            celebritiesFragment.setIndex(viewHolder.index);
            CelebritiesTabViewsStack.getInstance().push(celebritiesFragment);
            Intent intent = new Intent(thisContext, MainActivity.class);
            //finish();
            startActivity(intent);
            overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left);
        }
    }).delay(0).duration(250).playOn(viewHolder.mView);
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(0, R.animator.slide_out_right);
}

相关内容

最新更新