2012-06-10 4 views
3

모든 것이 onCreate() 메소드에서 초기화되는 동안 스플래시 화면을 표시하고 싶지만 화면에 물건을 그리는 데 필요한 구성 요소도 초기화되므로 검은 화면이 표시됩니다. 앱을 시작하고 onCreate() 메소드가 완료되면 첫 번째 화면 만 그려집니다. 검은 화면이 아니라 스플래시 화면을 원합니다.검은 화면 전에 Android 스플래시 화면

여기 내 코드에서 onCreate 방법입니다 :

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Acquire a wakeLock to prevent the phone from sleeping 
     PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); 

     // Setup all the Game Engine components 
     gameEngineLog = new WSLog("WSGameEngine"); 
     gameEngineLog.setLogType(this.gameEngineLogType); 
     gameLog = new WSLog(this.gameLogTAG); 
     gameLog.setLogType(this.gameLogType); 
     io = new FileIO(this, getAssets()); 
     audio = new Audio(this); 
     wsScreen = new WSScreen(this, this.screenResizeType, this.customTopYGap, this.customLeftXGap, this.gameScreenWidth, this.gameScreenHeight); 
     graphics = new Graphics(this, wsScreen.getGameScreen(), wsScreen.getGameScreenextended()); 
     renderView = new RenderView(this, wsScreen.getGameScreen(), wsScreen.getGameScreenextended(), FPS, maxFrameskippes); 
     input = new Input(this, renderView, logGameEngineInputLog); 
     setContentView(renderView); 

     if(useOfAnalytics == true) { 
      getGameEngineLog().w(classTAG, "Analytics has been enabled"); 
      analytics = new Analytics(this); 
     } 

     // Check that the developer has initialized the assets 
     if(this.assets == null) { 
      this.gameEngineLog.w(classTAG, "The assets for the game haven't been defined!"); 
     } 

    } 

어떻게, 시작 화면을 구현해야 시작 부분에 검은 색 화면을 피하기 위해?

답변

3

이 시작 화면에 대한 XML 레이아웃을 만들려면 다음과 같이 설정하고 // .onCreate() :

super.onCreate(savedInstanceState); 
setContentView (R.layout.splash_screen); 

충분해야합니다. setContentView (renderView)가 호출 될 때까지이 스플래시 화면을 표시합니다.

+0

setContentView (R.layout.splashscreen); // 작업 수행 setContentView (view); 첫 번째 setContent보기는 아무 효과가 없습니다. –

+0

무엇을 의미합니까? 스플래시 화면을 볼 수 없습니까? 어쩌면로드 시간이 너무 짧아서인지 할 수 없을 수도 있습니다. 이 경우에는 다른 답변에서 말한 것처럼 postDelayed 메서드를 사용해야합니다. –

+0

나는 그것이 작동하게했다, 모두 고쳤다. onContentView는 일단 onCreate() 메서드가 완료되면 효과가 있다고 생각합니다. –

2

시간이 UI 스레드에서 작업을 소모를 방지하지만, 그 자체를 UI에 관련된 경우 다음 바로 슈퍼 이후 콘텐츠보기로

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


      setContentView(R.layout.first_splash_lauoy); 

      new Handler().postDelayed(new Runnable() { 

       public void run() { 
        //Your time consuming work 
        //with spiiner(if needed) & setContentView(<finalView>) 
        }, 1000); 
     } 

    }