0

我有一个正在开发的 android 应用程序,并且在另一个活动中使用此方法启动了一个活动(通过 buttonclick)。

private void showInfo(){
    startActivity(new Intent(this, InfoActivity.class));
    overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
}

动画有效,它从底部滑入顶部,然后活动运行。然后我在新建的activity中点击一个按钮关闭它,代码如下:

ImageButton info = (ImageButton) findViewById(R.id.infoButton);
    info.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            finish();
            overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
        }
    });

如果用户按下“后退”按钮,则以下代码:

@Override

public void onBackPressed() {

    super.onBackPressed();

    overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);

}

最后,slide_in_bottom 的代码:

<translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300" />

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="100" android:startOffset="200" />

和slide_out_bottom:

<translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300" />

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="100" android:startOffset="200" />

问题是,新活动按计划从底部滑入,但是当我单击模拟器上的后退按钮或按图像按钮完成()活动时,它返回的活动从底部滑入就像新活动,但我希望它从顶部滑下。我怎样才能做到这一点,我做错了什么?

4

2 回答 2

0

这是我的顶级代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fromYDelta="-100%p"
        android:toYDelta="0%p" />

</set>

改变你的需要。在您当前的代码中,您从实际所在的 0 开始动画,您需要从屏幕上方的 -100 开始,而 100 在下方。

同样在 onBackPressed 中,只需像这样调用:

// handle hardware back button
    @Override
    public void onBackPressed() {
        finish();
        overridePendingTransition(R.anim.lefttocenter, R.anim.centertoright);

    }
于 2014-01-24T11:48:59.857 回答
0

尝试这个 :

@Override
protected void onPause(){
  super.onPause();
  overridePendingTransition(R.anim.your_exit_animation_one, R.anim.your_exit_animation_two);
}

public void onBackPressed(){
   //you can do your other onBackPressed logic here..

   //Then just call finish()
   finish();
}

我希望这会对你有所帮助......

于 2013-10-20T03:19:47.000 回答