0

私は現在、スプラッシュ スクリーンからメイン メニュー スクリーンへの遷移があるはずのアプリケーションに取り組んでいます。私はコーディングを行いましたが、そうではないようです。以下のコードの何が問題なのか、誰でも指摘できますか?

スプラッシュ スクリーン アクティビティ:

public class MainActivity extends Activity {

public static final String GAME_PREFERENCES = "GamePrefs";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    // fade in animation
    TextView logo1 = (TextView)findViewById(R.id.TextViewTopTitle);
    Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);
    logo1.startAnimation(fade1);

    // custom animation
    Animation spining = AnimationUtils.loadAnimation(this, R.anim.custom_anim);
    LayoutAnimationController controller = new LayoutAnimationController(spining);
    TableLayout table = (TableLayout)findViewById(R.id.TableLayout01);
    for(int i=0; i < table.getChildCount(); i++)
    {
        TableRow row = (TableRow) table.getChildAt(i);
        row.setLayoutAnimation(controller);
    }

    startAnimations();

    // saving game preferences
    SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);
    SharedPreferences.Editor prefEditor = settings.edit();
    prefEditor.putString("UserName", "JaneDoe");
    prefEditor.putInt("UserAge", 22);
    prefEditor.commit();
}

private void startAnimations() {
    // Transition from Splash screen to Main Menu screen
    Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
    fade2.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation)
        {
            startActivity(new Intent(MainActivity.this,QuizMenuActivity.class));
            MainActivity.this.finish();
        }
        public void onAnimationStart(Animation animation)
        {
            //Nothing
        }
        public void onAnimationRepeat(Animation animation)
        {
            //Nothing
        }
    });
}

メイン メニュー アクティビティ:

public class QuizMenuActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
    }
}

私のレイアウトはすでに完了しています。ここで何が間違っているかについて何か提案はありますか?

4

1 に答える 1

1

おそらく、AnimationListener がトリガーされることはありませんか? スプラッシュ画面を表示したいだけの場合は、そのままにしておきます。スプラッシュ アクティビティの onCreate に次のコードを追加してみてください。

Thread timer = new Thread() {           
    public void run() {             
        try {                   
            sleep(5000); // Sets delay before splash appears        
        } catch (InterruptedException e) {
            e.printStackTrace();                
        } finally {
            Intent main = new Intent(Splash.this, MainMenu.class);
            startActivity(main);    
            finish();
        }       
   };   
   timer.start();

5 秒間スリープしてから MainMenu に移動します。

編集

AnimationListener が呼び出されることはないと思うので、fade2.startNow()ここに追加してみてください。

private void startAnimations() {
    // Transition from Splash screen to Main Menu screen
    Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
    fade2.setAnimationListener(new AnimationListener() {
    public void onAnimationEnd(Animation animation)
    {
        startActivity(new Intent(MainActivity.this,QuizMenuActivity.class));
        MainActivity.this.finish();
    }
    public void onAnimationStart(Animation animation)
    {
        //Nothing
    }
    public void onAnimationRepeat(Animation animation)
    {
        //Nothing
    }
});
fade2.startNow();
}

Animation.startNow()またはの使用方法の詳細については、次を参照してAnimation.start()ください。

animation.start() または animation.startNow() がアニメーションをすぐに開始しない

于 2012-08-30T16:08:23.127 に答える