如何修复应用程序的白屏启动?
我有一个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 View
和Hierarchy 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版本,此问题不会在发布版本上显示。