2012-02-05 18 views
18

我目前正在開發一個Android應用程序,我遇到了一些與我的splash活動有關的問題。我希望我的主要活動從我的飛濺活動中淡入,而不是從黑屏中淡出。我的飛濺和主要活動都使用相同的背景圖像,所以如果我執行fade_in/fade_out組合,它看起來很奇怪,因爲在過渡期間背景會淡化一點。淡入從前活動Android中的活動

這裏的想法是我有我的標誌的版本:正常和發光。我希望我的主要活動淡入,所以我的發光徽標超過了我的正常徽標,導致整齊的「打開」效果。下面的代碼從黑屏中淡入,這並不理想。

/** 
* Pause Activity 
*/ 
@Override 
protected void onPause() 
{ 
    super.onPause(); 
    finish(); 
    overridePendingTransition(android.R.anim.fade_in, 0); 
} 

編輯:

創建我自己的fade_out動畫保留了1.0α水平(1.0〜1.0),並加入android:fillAfter="true"我解決了該問題飛濺動畫集。

回答

36

這是關於事物的順序。這是在3秒後消失到下一個活動的例子:

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 

    //Create an intent that will start the main activity. 
    Intent mainIntent = new Intent(SplashActivity.this, MainMenuActivity.class); 
    SplashActivity.this.startActivity(mainIntent); 

    //Finish splash activity so user cant go back to it. 
    SplashActivity.this.finish(); 

    //Apply splash exit (fade out) and main entry (fade in) animation transitions. 
    overridePendingTransition(R.anim.mainfadein, R.anim.splashfadeout); 
    } 
}, 3000); 

注意的是,這裏有一兩個動畫淡入和淡出。

mainfadein.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:duration="700" /> 

splashfadeout.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:zAdjustment="top" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" 
     android:duration="700" /> 
+0

槽糕......這與我當前的代碼相同的問題,即它關係到一個黑色的屏幕前的衰落如果我省略了fade_out,或者看起來有點怪,如果我把它放進去。我嘗試實現我自己的fade_out,它從1.0 alpha轉換爲1.0 alpha,但原始日誌o在新的淡入之前仍然流離失所。 這裏的目標是用主要活動「覆蓋」飛濺活動,使其看起來像其他視圖出現時徽標開始發光。 – Karai17 2012-02-05 15:54:01

+0

啊哈!我修好了它! – Karai17 2012-02-05 16:32:40

+2

很高興聽到,我還爲未來的訪問者添加了xml。因此,如果在spalsh中淡出,我們將android:fillAfter =「true」和alpha從1.0.設置爲1.0,我們得到了所謂的淡入淡出效果。很高興知道! – Lumis 2012-02-05 18:00:55

23

我建議對經典的淡入淡出,而是顯示新的活動沒有動畫,只是淡出目前的活動。這看起來&感覺更清潔,並解決了一些小問題,當您在動畫開始時從背景中打開應用程序時,您可以看到啓動程序/底層應用程序。

my_splash_fade_out.xml

<?xml version="1.0" encoding="utf-8"?> 

<alpha 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="750" 
    android:fromAlpha="1.0" 
    android:interpolator="@android:interpolator/accelerate_cubic" 
    android:startOffset="250" 
    android:toAlpha="0.0" 
    android:zAdjustment="top" /> 

我加入這裏startOffset給新創建的活動有點過了一個良好的開端,因爲它是相當沉重的。

MySplashActivity.java

... 
startActivity(...); 
finish(); 
overridePendingTransition(0, R.anim.screen_splash_fade_out); 

預覽

Preview animation

+0

這樣好多了,謝謝! – George 2016-01-27 23:32:37

+0

好看又簡潔。 – 2016-06-20 09:34:36