我有一个Android应用程序,在启动时会显示白屏2秒钟。我的其他应用程序不执行此操作,但此应用程序可以执行此操作。我还实现了一个初始屏幕,希望它可以解决此问题。我应该增加开机画面的睡眠时间吗?谢谢。
我有一个Android应用程序,在启动时会显示白屏2秒钟。我的其他应用程序不执行此操作,但此应用程序可以执行此操作。我还实现了一个初始屏幕,希望它可以解决此问题。我应该增加开机画面的睡眠时间吗?谢谢。
Answers:
只需在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
class代替扩展该屏幕AppCompatActivity
。
喜欢 :
public class SplashScreenActivity extends Activity{
----YOUR CODE GOES HERE----
}
final ActionBar actionBar = getActionBar();
当主题为半透明时
将其放在自定义样式中,可以解决所有问题。使用hacky半透明的修复程序可使您的任务栏和导航栏变得半透明,并使初始屏幕或主屏幕看起来像意大利面条。
<item name="android:windowDisablePreview">true</item>
就像您管一样。最初,它们显示的是图标屏幕,而不是白色屏幕。并在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中,将window背景属性设置为XML drawable。在AndroidManifest.xml中将其配置为启动活动的主题:
<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>
mipmap/ic_launcher
layer-list
可能是: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Background color --> <item android:drawable="@color/white"/> <!-- Logo at the center of the screen --> <item android:drawable="@mipmap/ic_launcher" android:gravity="center"/> </layer-list>
在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">
您应该阅读Cyril Mottier的这篇精彩文章:Android App的发布变得华丽
您需要Theme
在style.xml中自定义您的内容,并避免在您的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>
但:
您的LAUNCHER Activity必须扩展Activity,而不是默认情况下的AppCompatActivity!
白色背景来自Apptheme。您可以显示有用的内容,例如应用程序徽标而不是白色屏幕。可以使用自定义主题来完成。在应用程序中,只需添加主题
android:windowBackground=""
属性。该属性值可以是图像或分层列表或任何颜色。
<item name="android:windowBackground">@android:color/transparent</item>
以下是建议如何设计启动画面的链接。为了避免出现白色/黑色背景,我们需要定义一个带有启动背景的主题,并将该主题设置为在清单文件中启动。
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>
在清单设置主题中,如下所示
<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>
我的一个项目中也遇到了同样的问题。我通过在提供给初始屏幕的主题中添加以下一些参数来解决该问题。
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
您可以在我撰写的此博客文章中找到原因和解决方案。希望能帮助到你。
可以通过将清单中的主题设置为来解决此问题
<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在应用加载到内存时启动,如果您仅在SplashTheme下添加这两行代码,则可以避免这种情况。
<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>
您应该禁用即时运行android studio设置。
File> Settings> Build,Execution,Deployment> Instant Run取消选中此处显示的所有选项。
注意:由于“ 即时运行”导致的白屏问题仅适用于Debug版本,该问题不会出现在发行版本中。
尝试以下代码:
<!-- 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设备上工作。
它的解决方案非常简单!
此问题有三个基本原因
解决方案:
解决方案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,这会导致此问题。
分享改善。
这解决了问题:
粘贴以下代码:
<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文件中进行修改。(主题名称)
请注意该文件中活动的声明顺序。
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>
onCreate
作用。尝试仅在该活动中“ setContentView”,然后检查是否已消除此延迟。