我有一个Android应用程序,在启动时显示白色屏幕2秒。我的其他应用程序不这样做,但这个应用程序。我还实现了一个启动画面,希望能解决这个问题。我应该增加闪屏的睡眠时间吗? 感谢。
答案 0 :(得分:150)
将其置于自定义样式中,它可以解决所有问题。使用hacky半透明修复将使您的任务栏和导航栏半透明,使闪屏或主屏幕看起来像意大利面。
<item name="android:windowDisablePreview">true</item>
答案 1 :(得分:97)
只需在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>
并使用Activity
类扩展该屏幕以代替AppCompatActivity
。
喜欢:
public class SplashScreenActivity extends Activity{
----YOUR CODE GOES HERE----
}
答案 2 :(得分:65)
就像你管...最初他们显示图标屏幕而不是白色屏幕。 2秒后显示主屏幕。
首先在res / drawable中创建一个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文件并为启动活动添加新主题
<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 drawable。在AndroidManifest.xml中将其配置为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>
标签不同,它也接受居中徽标的矢量绘图):
<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>
答案 3 :(得分:64)
在style.xml中创建一个样式,如下所示:
<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">
答案 4 :(得分:7)
你应该阅读Cyril Mottier的这篇精彩文章:Android App launching made gorgeous
您需要在style.xml中自定义Theme
,并避免在onCreate
中自定义为ActionBar.setIcon / setTitle / etc。
另请参阅Google的Performance Tips文档。
使用Trace View
和Hierarchy Viewer
查看展示观看次数的时间:Android Performance Optimization / Performance Tuning On Android
使用AsyncTask
显示一些观看次数。
答案 5 :(得分:5)
这是我在应用示例应用中的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开发人员,这是您需要设置的唯一内容,以便在应用程序的开头隐藏白屏。
答案 6 :(得分:3)
这两个属性都可以使用其中任何一个。
<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>
答案 7 :(得分:3)
答案 8 :(得分:3)
白色背景来自Apptheme.You可以显示一些有用的东西,如你的应用程序徽标而不是白色屏幕。可以使用自定义主题完成。在你的应用程序主题只需添加
android:windowBackground=""
属性。 属性值可以是图像或分层列表或任何颜色。
答案 9 :(得分:2)
我在我的一个项目中也遇到了同样的问题。我通过在提供给初始屏幕的主题中添加以下一些参数来解决该问题。
sudo gitlab-ctl reconfigure
您可以在我写的this blog post中找到原因和解决方法。希望对您有所帮助。
答案 10 :(得分:1)
可以通过将清单中的主题设置为
来修复<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中扩展活动而不是 AppCompatActivity 。
希望它有所帮助!
答案 11 :(得分:1)
白色背景是由于Android在应用程序加载到内存时启动而引起的,如果您仅在SplashTheme下添加这两行代码,就可以避免这种情况。
<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>
答案 12 :(得分:1)
I encountered a similar problem and to overcome it, I implemented the code below in styles, i.e res->values->styles->resource tag
<item name="android:windowDisablePreview">true</item>
Here is the whole code:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDisablePreview">true</item>
</style>
答案 13 :(得分:0)
你应该禁用Instant Run android studio设置。
文件&gt;设置&gt;构建,执行,部署&gt;即时运行取消选中此处显示的所有选项。
注意:白屏由于即时运行导致的问题仅适用于调试版本,此问题不会出现在版本构建中。
答案 14 :(得分:0)
以下是建议如何设计启动画面的链接。为了避免白/黑背景,我们需要定义一个带有初始背景的主题,并将该主题设置为在清单文件中显示。
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
res / drawable文件夹中的splash_background.xml
<?xml version=”1.0" encoding=”utf-8"?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android">
<item android:drawable=”@color/colorPrimary” />
<item>
<bitmap
android:gravity=”center”
android:src=”@mipmap/ic_launcher” />
</item>
</layer-list>
添加以下样式
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Splash Screen theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
在Manifest中设置主题如下所示
<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>
答案 15 :(得分:0)
尝试以下代码:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<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>
此代码对我有效,并且可在所有Android设备上使用。
答案 16 :(得分:0)
其解决方案非常简单!
此问题有三个基本原因
解决方案:
解决方案1:
Remove the Heavy Task from onCreateView() function and place it some where appropriate place.
解决方案2:
Reduce the Thread Sleep time.
解决方案3:
Remove the Third party library at app initialize at implement them with some good strategy.
就我而言,我正在使用Sugar ORM,这会导致此问题。
分享以改善。
答案 17 :(得分:0)
这解决了问题:
粘贴以下代码:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
请不要忘记在 AndroidManifest.xml 文件中进行修改。 (主题名称)
请注意该文件中活动的声明顺序。