2011-11-03 11 views
0

私は最初のAndroidプロジェクトに取り組んでいます。メインメニューが表示される前に黒くフェードする簡単なスプラッシュ画面を作っています。これまでのところ動作します。問題は、画像がフェードアウトした直後です。メインメニューを表示する前に、1秒間ポップアップして戻ってきます。ここでTrouble with Fade Out - Androidのアニメーション

はSplashActivity.javaのためのコードです:

public class SplashActivity extends Activity 
{ 
LinearLayout mLinearLayout; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    mLinearLayout = new LinearLayout(this); 


    ImageView i = new ImageView(this); 
    i.setImageResource(R.drawable.splash); 
    mLinearLayout.addView(i); 
    setContentView(mLinearLayout); 

    Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_out); 
    i.startAnimation(fade); 

    fade.setAnimationListener(new AnimationListener() { 
     public void onAnimationEnd(Animation animation) 
     { 
      startActivity(new Intent(SplashActivity.this, MenuActivity.class)); 
      SplashActivity.this.finish(); 
     } 

     public void onAnimationRepeat(Animation arg0) {    
     } 

     public void onAnimationStart(Animation arg0) { 
     } 
    }); 
} 
} 

ここsplash.xmlためのコードです:

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

<LinearLayout 
xmlns:android = "http://schemas.android.com/apk/res/android" 
android:orientation = "vertical" 
android:layout_width = "match_parent" 
android:layout_height = "match_parent" 
android:background = "#000"> 
</LinearLayout> 

は最後に、ここにフェードアウトするためのXMLです:

<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
    android:fromAlpha="1.0" 
    android:toAlpha="0.0" 
    android:duration="500" 
    android:startOffset="2500"> 
    </alpha> 
</set> 

カップルノート: 今すぐスプラッシュ画面はショーのためのものです(私がri本当の目的を果たしていません)。 AndroidManifest xmlなど、必要と思われるものを貼り付けることができます。

何かすべての助けがありがとうございます。ありがとう!

答えて

3

アニメーションが終了した後、元の状態に戻ります。 Androidのアニメーションは混乱しますが、あなたが見ているものが蜃気楼であると想像してください。アニメーション化しているビューについては、実際には何も変わりません。それが終わると、それは元に戻ってきます。

例として、100dp x 100dpのボタンを作成し、スケーリングが小さいか回転することによってアニメートします。非常にゆっくり。空白に見える領域をクリックすると、そのボタンは実行されてもヒットが登録されます。それはまだそこにあるからですが、あなたはそれを見ません。あなたがする必要がどのような

は、アニメーションのリスナーに画像上に可視性を設定されている:

public void onAnimationEnd(Animation animation) 
    { 
     startActivity(new Intent(SplashActivity.this, MenuActivity.class)); 
     SplashActivity.this.finish(); 
     i.setVisibility(View.INVISIBLE); 
    } 

あなた onAnimationStartでそれを行う必要があるかもしれません。実験。

私はこれをしばらく前に発表しました。有用である可能性がある:これは役立つだろう

https://docs.google.com/present/view?id=djqv5kb_187c62jvbf7

+1

また、 'fade.setFillAfter(true)'を呼び出すこともできます。アニメーションが終了すると、最終結果がビューに適用されます。 – dmon

2

public void onAnimationEnd(Animation animation) 
     { 
      i.setVisibility(View.INVISIBLE); 
      startActivity(new Intent(SplashActivity.this, MenuActivity.class)); 
      SplashActivity.this.finish(); 
     } 
+0

これは素晴らしい作品です、ありがとうございます。 – vince88