如何修复应用程序的白屏启动?

我有一个Android应用程序,启动时显示一个白色屏幕2秒。 我的其他应用程序不这样做,但这个。 我也实施了一个闪屏,希望能解决这个问题。 我应该增加我的闪屏睡眠时间吗? 谢谢。

只需在AndroidManifest.xml文件中提到启动活动的透明主题即可。
喜欢:

 <activity android:name="first Activity Name" android:theme="@android:style/Theme.Translucent.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

把它放在一个自定义的风格,它解决了所有的问题。 使用hacky半透明修补程序将使您的任务栏和导航栏半透明,使闪屏或主屏幕看起来像意大利面条。

<item name="android:windowDisablePreview">true</item>

在style.xml中创build一个样式,如下所示:

 <style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowIsTranslucent">true</item> </style> 

并将其与您在AndroidManifest中的活动一起使用为:

 <activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent"> 

在这里输入图像描述

像你pipe..最初他们显示图标屏幕,而不是白屏。 2秒后显示主屏幕。

首先在res / drawable中创build一个XML drawable。

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/gray"/> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher"/> </item> </layer-list> 

接下来,您将在主题中将其设置为您的飞溅活动的背景。 导航到您的styles.xml文件并为您的splash活动添加一个新的主题

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowBackground">@drawable/background_splash</item> </style> </resources> 

在新的SplashTheme中,将窗口背景属性设置为您的XML可绘制。 在你的AndroidManifest.xml中将它configuration为你的splash活动的主题:

 <activity android:name=".SplashActivity" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

这个链接给你想要的。 一步一步程序。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/

更新:

layer-list甚至可以更简单(与<bitmap>标签不同,它也接受中心徽标的vector绘制):

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Background color --> <item android:drawable="@color/gray"/> <!-- Logo at the center of the screen --> <item android:drawable="@mipmap/ic_launcher" android:gravity="center"/> </layer-list> 

你应该阅读这个伟大的post由Cyril Mottier: Android应用程序推出华丽

你需要在style.xml中定制你的Theme ,并避免在你的onCreate定制为ActionBar.setIcon / setTitle / etc。

另请参阅Google的性能提示文档。

使用Trace ViewHierarchy Viewer显示您的视图的时间:在Android上进行Android性能优化 / 性能调整

使用AsyncTask来显示一些视图。

这是我的AppTheme上的示例应用程序:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowIsTranslucent">true</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> 

正如你所看到的,我有默认的颜色,然后我添加了android:windowIsTranslucent并将其设置为true

据我所知,作为一个Android开发人员,这是你需要设置的唯一的东西,以隐藏在应用程序的开始白屏。

两个属性都可以使用其中的任何一个。

  <style name="AppBaseThemeDark" parent="@style/Theme.AppCompat"> <!--your other properties --> <!--<item name="android:windowDisablePreview">true</item>--> <item name="android:windowBackground">@null</item> <!--your other properties --> </style> 

user543的答案是完美的

 <activity android:name="first Activity Name" android:theme="@android:style/Theme.Translucent.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

但:

You'r LAUNCHER活动必须扩展Activity ,而不是AppCompatActivity,因为它默认是来的!

白色背景来自Apptheme.You可以显示一些有用的东西像你的应用程序的标志,而不是白色screen.it可以完成使用自定义theme.in你的应用程序主题只是添加

 android:windowBackground="" 

属性。 属性值可以是图像或分层列表或任何颜色。

它可以通过在您的清单中设置主题来解决

 <activity android:name=".MySplashActivityName" android:theme="@android:style/Theme.Translucent.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

之后,如果你正在得到
java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。
那么您可能需要在MySplashActivity中扩展Activity而不是AppCompatActivity

希望它有帮助!

你应该禁用即时运行android studio设置。

文件>设置>构build,执行,部署>即时运行取消选中显示的所有选项。

注意:白屏由于即时运行的问题仅适用于debugging版本,此问题不会在发布版本上显示。