2013-06-01 87 views
2

我想讓「向上」導航使用與「返回」導航相同的動畫。我正在使用overridePendingTransition覆蓋動畫,但我無法確定後退按鈕默認使用哪個動畫資源。有人知道嗎?Android中的默認後退按鈕導航動畫

作爲示例,在默認的ICS安裝中,Settings應用程序會從其子頁面執行此操作。

回答

4

最後我呼籲了導航finish()。這樣,動畫是相同的,並且以前的活動不會失去其狀態。作爲參考,代碼如下:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      return true; 
    } 
    return false; 
} 

請注意,如果你的活動可以從您的應用程序之外啓動,可能需要一些額外的邏輯,確保了導航的預期行爲。

+0

你爲什麼不設置祖先的導航? https://developer.android.com/training/implementing-navigation/ancestral.html不會使用與後退按鈕相同的動畫(無論不同版本使用哪種動畫)? – tir38

1

所以,如果我正確理解你,你想複製「後退」動畫(滑出左側)你的一個意見或重寫後退按鈕按下。那麼,爲此,請在名爲animres文件夾中創建一個新文件夾。內anim文件夾中創建一個新的Android XML文件,並將其命名爲slide_out_left和將下面的代碼:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="-50%p" 
     android:duration="@android:integer/config_mediumAnimTime"/> 
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
     android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 

現在,創建另一個Android XML文件,並調用它slide_in_right並把下面的代碼:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="50%p" android:toXDelta="0" 
     android:duration="@android:integer/config_mediumAnimTime"/> 
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 

最後,你可以在任何需要的地方調用動畫。例如,當重寫等待轉換:

MyActivity.this.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 
+1

後退按鈕的默認ICS動畫不會橫向移動。它以3D方式淡入淡出。 – Chris

+0

爲什麼沒有人喜歡(投票)這個答案? –