Android应用程序overridePendingTransition未显示

时间:2017-03-28 09:53:51

标签: android android-studio

我有Main Activity使用WebView的应用加载网页。

当用户想要使用设备上的后退按钮(而不是屏幕上的后退按钮)返回上一个网页时,我尝试设置动画,但动画根本不显示。

以下代码超出onCreate()

注意:请注意,我在每个注释掉的行中尝试了overridePendingTransition,但没有任何效果。

以下是代码:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.i("BACK", " Back pressed!");
      //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

        if ((keyCode == KeyEvent.KEYCODE_BACK) && this.webView.canGoBack()) {
          //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
            this.webView.goBack();
            return true;
        }
        else{
            return super.onKeyDown(keyCode, event);
        }
    }

    @Override
    public void onBackPressed(){
        super.onBackPressed();
      //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
     //finish();
        return;
    }

如果我使用finish()它会退出应用而不是返回。

这里是slide_in_right xml:

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

    <translate
        android:fromXDelta="100%"
        android:toXDelta="0%"
        android:duration="500" />

    <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0" />

</set>

最后是slide_out_left:

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

    <translate
        android:fromXDelta="0%"
        android:toXDelta="-100%"
        android:duration="500" />

    <alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.0" />

</set>

我不确定我错过了什么。我已经检查了很多主题,但我无法修复我的问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

super.onBackPressed();移除public void onBackPressed()因为它会发出超级电话,而活动只会在那里完成。

将onBackPressed()代码更改为:

@Override
    public void onBackPressed(){
        finish();
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
    }

是的,正如Kishore Jethava所说。您应首先调用finish()然后调用onPrndingTransition(..)

答案 1 :(得分:0)

这是解决方案!!!

完成Activity

后,

调用 overridePendingTransition

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
    overridePendingTransition(R.anim.activity_backin, R.anim.activity_back_out);

}
anim文件夹

中的

activity_backin.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="200"
    android:fromXDelta="-100%"
    android:toXDelta="0%" />
</set>
anim文件夹

中的

activity_back_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="200"
    android:fromXDelta="0%"
    android:toXDelta="100%" />
</set>