2010-04-16 42 views
107

我有兩個活動A和B.我想要縮小動畫時 活動A調用B並在活動B調用時最大化動畫A.我不需要動畫xml文件。如何在Android中調用另一個活動時提供動畫?

當我們在Android中調用另一個Activity時,它會給出它的默認動畫,然後調用縮小動畫。

我想要的是,默認動畫不應該發生,我想要的動畫應該發生。

我們可以在調用另一個Activity時真的給動畫嗎?

回答

129

由於API 16可以在調用Context.startActivity(Intent, Bundle)或相關方法時所提供的活動選項包。它通過ActivityOptions建設者創建:

Intent myIntent = new Intent(context, MyActivity.class); 
ActivityOptions options = 
    ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out); 
context.startActivity(myIntent, options.toBundle()); 

不要忘記檢查出ActivityOptions建設者的其他方法和ActivityOptionsCompat如果您使用的是支持庫。



API 5+:

對於應用定位API級5+存在活動overridePendingTransition方法。它需要兩個資源ID用於傳入和傳出動畫。一個0的ID將禁用動畫。在撥打startActivity後立即致電此。

即:

startActivity(new Intent(this, MyActivity.class)); 
overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 

API 3+:

您可以防止與您的意圖Intent.FLAG_ACTIVITY_NO_ANIMATION標誌默認的動畫(從右側滑入)。

即:

Intent myIntent = new Intent(context, MyActivity.class); 
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
context.startActivity(myIntent); 

然後在你的活動,你只需指定自己的動畫。

這也適用於1.5 API(3級)。

+4

你是什麼意思當你說「指定你自己的動畫」?你怎麼做到這一點?謝謝! – pqn 2011-08-18 21:48:05

+0

我有同樣的問題。可能在onResume和onPause中啓動動畫。 – Tima 2011-08-22 07:40:29

+0

是否有一種方法可以使用Animator? – 2014-10-20 08:23:24

78

您必須使用OverridePendingTransition方法來實現它,它在Activity class中。 apidemos示例res/anim文件夾中的示例動畫。覈實。不止檢查ApiDemos/App/Activity/animation中的演示。

例子:

@Override 
public void onResume(){ 
    // TODO LC: preliminary support for views transitions 
    this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left); 
} 
+1

感謝您的回覆。方法overridePendingTransition從API級別5支持,我希望應用程序可以從Android 1.5支持。是否有任何其他方式將動畫從一個活動提供給另一個活動。 – sunil 2010-04-17 06:21:28

+5

真棒!這是一個很有趣的玩 – 2011-05-25 21:47:15

+0

@sunil我有像你一樣的quetion.could你解決這個問題?動畫與API級別3或4(而不是5) – 2012-10-23 07:19:25

3

果凍豆增加了對這種支持與ActivityOptions.makeCustomAnimation()方法。當然,因爲它只在果凍豆上,所以它對於實際用途來說是非常沒有價值的。

+5

它不值錢了:) – 2014-02-09 20:09:18

+0

如果您的目標是JellyBean,請使用'ActivityOptionsCompat'。 – 2016-01-10 06:05:45

相關問題