2013-10-08 17 views
0

我已經宣佈了兩個自定義動畫,這是工作正常運行與HTC Sense 3.5(自定義ROM,Endymion V3.5的Android 2.3.5的HTC Desire s,所以我可以測試操作系統在ICS之前)。在開始一項新活動時,新屏幕從右側滑入,關閉當前活動,新屏幕從左側滑入,這樣就很好。我的代碼是:自定義活動過渡不工作Nexus4

overridePendingTransition(com.my.app.R.anim.slidein, com.my.app.R.anim.slideout); 

宣佈動畫的個XML如下:

slidein.xml

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

slideout.xml

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

但是,問題來了。

相同的apk部分工作在Nexus4上。當打開新的活動時,它會正常工作,新屏幕從右側滑入。關閉當前活動時,前一個屏幕會以默認動畫顯示,忽略我的自定義動畫。我的Nexus4上有Unofficial CM 10.2, with android 4.3

我的問題是:是否應該在android 4.3上這樣工作?也許在更新的API級別上,還有另一種方法,我需要調用才能正確使用它?任何幫助表示讚賞!

乾杯

編輯:我宣佈自退出動畫,separetely,並與建議的解決方案相結合,現在按預期工作。

closeslidein.xml:

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

closeslideout.xml:

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

和精加工proccess:

@Override 
public void finish() 
{ 
    super.finish(); 
    overridePendingTransition(com.my.app.R.anim.closeslidein, com.my.app.R.anim.closeslideout); 
} 

回答

1

確保正確調用。如果你明確地打電話finish(),那麼你需要立即撥打overridePendingTransition()。如果您不明確地呼叫finish(),那麼您需要覆蓋onBackPressed()並在那裏調用overridePendingTransition()

+0

在你的建議之後,我重寫了'finish()',在'super.finish'後面加了'overridePendingTransition(com.my.app.R.anim.slidein,com.my.app.R.anim.slideout) ();',並且動畫現在顯示出來。但是,我正在獲得開啓新活動的動畫,而不是關閉當前活動。奇怪,我得看看它,謝謝。 – hundeva