2012-09-06 35 views
6

我是新來的Android動畫,我似乎有一個簡單的問題...我有一個飛濺/加載屏幕,我想淡出完成後,然後顯示應用程序。Android淡出LinearLayout從不開始

我的佈局看起來像這樣(的樣式只是設置背景圖片):

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/homeParentContainer" 
    style="@style/LayoutWithBgStyle" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/homeSplashLayout" 
     style="@style/LayoutWithSplashStyle" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/homeMainLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:orientation="vertical" 
     android:visibility="gone" > 
    </LinearLayout> 
</RelativeLayout> 

然後我嘗試了兩種不同的方法來走出衰退閃屏和設置主屏幕可視:

final Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); 
final View splash = findViewById(R.id.homeMainLayout); 
fadeOut.setAnimationListener(new AnimationAdapter() 
{ 
    @Override 
    public void onAnimationEnd(final Animation animation) 
    { 
     splash.setVisibility(View.GONE); 
     findViewById(R.id.homeMainLayout).setVisibility(View.VISIBLE); 
    } 

    /** And the other two methods */ 

}); 
splash.startAnimation(fadeOut); 

然後我想我自己的動畫:

final AlphaAnimation fadeOut = new AlphaAnimation(1.0F, 0.0F); 
fadeOut.setDuration(1000); 
final View splash = findViewById(R.id.homeMainLayout); 
fadeOut.setAnimationListener(new AnimationListener() 
{ 
    @Override 
    public void onAnimationEnd(final Animation animation) 
    { 
     splash.setVisibility(View.GONE); 
     findViewById(R.id.homeMainLayout).setVisibility(View.VISIBLE); 
    } 

    /** And the other two methods */ 

}); 
splash.startAnimation(fadeOut); 

而且我到達startAnimation代碼,但動畫似乎永遠不會開始,我從來沒有得到onAnimationEnd()調用。我忘了包括什麼讓動畫實際運行?

回答

1

我一直是一個粗心的程序員。

final View splash = findViewById(R.id.homeMainLayout); 

實際上應:

final View splash = findViewById(R.id.homeSplashLayout); 

因爲淡出的東西是看不見的不是我本來打算。