2017-03-22 47 views
0

我創建了一個BaseActivity,並在其中我自定義的方法完成如何自定義的方法完成在我的活動時,它延伸baseactivity

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

現在我創建一個新的活動B擴展BaseActivity但我想,當我完成Actiivty BI使用新動畫

overridePendingTransition(R.anim.transtate_out, R.anim.hold_actibity); 

如何在活動B中的通話完成時替換動畫? 謝謝收看!

回答

0

一種方法是去除BaseActivity類的完成方法和重寫此完成方法ActivityB類添加自定義動畫在那裏,就像這樣:

@Override 
public void finish() { 
    overridePendingTransition(R.anim.transtate_out, R.anim.hold_actibity); 
    super.finish(); 
} 
+0

謝謝你,但在其他活動,我必須使用overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left); 只有在B活動中我使用了 overridePendingTransition(R.anim.transtate_out,R.anim.hold_actibity); 我做到了,我在BaseActivity中添加了一個新的方法finish()並在B Activity中調用。 感謝您的回答! –

+0

很高興你發現了一個修復程序。但是,如果我理解正確,例如,如果您有2個活動擴展了BaseActivity,並且他們不共享公共代碼(在您的情況下爲overridePendingTransition),那麼在BaseActivity中擁有這樣的代碼沒有意義。更好的選擇是覆蓋每個子類中的finish方法。 –

0

可以在BaseActivity聲明一個變種像

int inAnimRes = R.anim.slide_in_right, outAnimRes = R.anim.slide_out_left; 

@Override 
public void finish() { 
    overridePendingTransition(inAnimRes , outAnimRes); 
    super.finish(); 
} 

然後B.設定值,以這兩個變量

相關問題