2012-08-30 84 views
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); 
    } 
} 

我的布局已经完成。有什么问题在这里有什么建议吗?

回答

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() or animation.startNow() does not start the animation immediately

+0

嗯,我可以试试。在启动画面上的动画完成后,我只是打算进入主菜单。 – Neophile

+0

当它在Splash屏幕上卡住时,动画是否正在播放? –

+0

是的,第一个动画是在它旋转并进入窗口前面的时候播放的......不是第二个动画... – Neophile