如何在Android中通过ActivityOptions在finish()上设置动画?

如何在Android中通过ActivityOptions在finish()上设置动画?,android,bundle,android-animation,activity-finish,Android,Bundle,Android Animation,Activity Finish,我正在开发一个有两个活动的应用程序,Main和Info。应用程序以MainActivity启动,当您单击按钮时,InfoActivity从右侧滑入。当您单击另一个按钮时,InfoActivity将再次滑出到右侧,Main将返回 以下是我在MainActivity中实现动画和按钮单击的方式: buttonInfo.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Int

我正在开发一个有两个活动的应用程序,Main和Info。应用程序以MainActivity启动,当您单击按钮时,InfoActivity从右侧滑入。当您单击另一个按钮时,InfoActivity将再次滑出到右侧,Main将返回

以下是我在MainActivity中实现动画和按钮单击的方式:

buttonInfo.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) {
       Intent i = new Intent(getApplicationContext(), Info.class);
       Bundle mAnimate = 
          ActivityOptions.makeCustomAnimation(getApplicationContext(),
           R.anim.ani1,R.anim.ani2).toBundle();

          startActivity(i,mAnimate);
            }
        });
我在InfoActivity中也做了类似的工作,效果很好。但是,我希望并且需要调用finish()而不是startActivity,因为我在MainActivity中有一个服务器连接,当我调用startActivity时,它会断开连接

如何将这样的动画应用于finish()方法或其他建议?

如演练中所述,您可以将Info.class的finish()方法替换为

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.ani2, R.anim.ani1);
}
使用

这将在动画结束后完成活动

Bundle options = ActivityOptionsCompat.makeCustomAnimation(this,R.anim.ani1,R.anim.ani2).toBundle();
ActivityCompat.startActivity(this, intent, options)
        ActivityCompat.finishAfterTransition(this);