黑色屏幕之前的Android Splash Screen

我希望在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!"); } } 

我应该如何实现启动画面,以避免一开始的黑屏?

为此初始屏幕创建XML布局,并在super.onCreate()之后立即将其设置为内容视图:

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

那应该够了。 它将显示此启动屏幕,直到调用setContentView(renderView)。

//避免在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() }, 1000); } }