3

すべてが onCreate() メソッドで初期化されている間にスプラッシュ スクリーンを表示したいのですが、画面に何かを描画する必要があるコンポーネントも初期化されているため、アプリの起動時と onCreate() の後に黒い画面が表示されます。メソッドが完了すると、最初の画面のみが描画されます。黒い画面の代わりに、スプラッシュ スクリーンが必要です。

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!");
        }

    }

最初に黒い画面が表示されないようにするには、スプラッシュ スクリーンをどのように実装すればよいですか?

4

2 に答える 2

3

// 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);
        }

    }
于 2012-06-10T09:20:00.710 に答える
3

このスプラッシュ スクリーンの XML レイアウトを作成し、super.onCreate() の直後にコンテンツ ビューとして設定します。

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

それで十分なはずです。setContentView(renderView) が呼び出されるまで、このスプラッシュ スクリーンが表示されます。

于 2012-06-10T09:20:13.000 に答える