5

我正在开发一个有两个活动的应用程序,主要和信息。该应用程序以 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() 方法或其他建议?

4

3 回答 3

13

DevBytes: Window Animations walkthrough 中所述,您可以将 Info.class 的 finish() 方法替换为

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.ani2, R.anim.ani1);
}
于 2013-02-25T21:29:35.347 回答
6

利用

        ActivityCompat.finishAfterTransition(this);

这将在动画之后完成活动

于 2015-08-30T17:05:56.190 回答
-3
Bundle options = ActivityOptionsCompat.makeCustomAnimation(this,R.anim.ani1,R.anim.ani2).toBundle();
ActivityCompat.startActivity(this, intent, options)
于 2013-12-06T02:58:01.217 回答