如何使活动中的动画播放以意图开始,并在完成时使用finish()

时间:2013-10-20 02:24:29

标签: android android-animation

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

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

动画有效,它从底部滑到顶部,活动就会运行。然后我单击新活动中的一个按钮将其关闭,代码如下:

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" />

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

2 个答案:

答案 0 :(得分: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();
}

我希望这会为你提供帮助....

答案 1 :(得分: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);

    }