繁体   English   中英

Android应用程序overridePendingTransition未显示

[英]Android app overridePendingTransition not shown

我有一个使用WebView加载网页的Main Activity的应用程序。

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

下面的代码在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>

我不确定我缺少什么。 我已经检查了很多主题,但无法解决我的问题。

提前致谢。

删除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(),然后再调用onerridingPendingTransition(..)

这是解决方案!!!

完成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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM