2017-03-28 31 views
0

我有一個應用程序Main Activity使用WebView加載一個網頁。Android應用override overrideEndingTransition不顯示

我想在用戶想要使用設備上的後退按鈕(而不是屏幕上的後退按鈕)返回到以前的網頁但動畫未完全顯示時設置動畫。以下代碼不在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> 

我不知道我缺少的是什麼。我已經檢查了很多主題,但我無法解決我的問題。

在此先感謝。

+0

當你完成時,有沒有任何以前的'Activity'堆棧? –

+0

@KishoreJethava不,沒有其他'活動'。當前活動是主活動,它具有加載網頁的「WebView」。所以當用戶點擊設備的後退按鈕時,我想要上面的動畫。可能嗎? – Johny

+0

表示您只想使用動畫關閉「WebView」?在我的答案它將關閉應用程序與動畫 –

回答

0

public void onBackPressed()中刪除super.onBackPressed();,因爲它會發出超級通話,並且活動只在那裏完成。

您onBackPressed()的代碼更改爲:

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

是,由紀Jethava提及。你應該先調用finish(),然後onerridingPendingTransition(..)

+0

我已經試過這個,但它結束了應用程序,而不是回去。 – Johny

0

這裏是解決方案!

呼叫overridePendingTransitionanim文件夾整理Activity

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

} 

activity_backin.xmlanim文件夾

<?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> 

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>