如何在按下主页按钮时完成自定义动画的活动

时间:2014-09-16 20:56:42

标签: android android-activity back android-homebutton

我有一个ActionBarActivity" B"其父母是ActionBarActivity" A" (也在清单中定义)。 A在" singleTask"发射模式。从A开始B时我有一个动画如下:

public void onItemClick(...) {
    Intent mIntent = new Intent(getActivity(), B.class);
    startActivity(mIntent);
    getActivity().overridePendingTransition(R.anim.B_in, R.anim.A_out);
}

在B上,我有以下onOptionsItemSelected和onBackPressed:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        getSupportFragmentManager().popBackStackImmediate();
        //onBackPressed();
        //finish();
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.A_in, R.anim.B_out);
}

问题出现了:当我按下后退按钮时,onBackPressed上的动画正在按预期进行。但是,当我点击操作栏左上角的图标时,会调用popBackStackImmediate,并播放Android的默认动画,这是不同的。所以:

  1. 如何设置获得与onBackPressed相同的动画?
  2. 我应该使用onBackPressed()而不是popBackStackImmediate()吗?它会给出与popBackStackImmediate相同的结果吗?
  3. 欢迎提出任何建议和最佳做法......

1 个答案:

答案 0 :(得分:2)

您可以使用.popBackStack()而不是popBackStackImmediate()然后覆盖pendingTransition,这可能有效。既然这些都是活动,我倾向于调用finish();然后overridePendingTransition()。