我想知道如何实现这种效果。
我的应用程序(默认所有内容),当点击启动器图标时,立即显示某种空的虚拟窗口,其中没有任何事情发生,然后将布局加载到其中。
“重型”应用程序,如YouTube,云端硬盘,Dropbox等,启动时似乎等待启动后,没有显示虚拟窗口并加载到准备好的布局中。
知道怎么做或者我应该在哪里研究?
由于
//编辑:这与加载数据库无关,我应该在其中显示progressBar,imho这与活动存在之前的内容有关。
答案 0 :(得分:24)
我建议您不要使用以下方法禁用虚拟加载窗口:
<style name="Theme.MyTheme" parent="android:style/Theme" >
....
<item name="android:windowDisablePreview">true</item>
....
</style>
因为你可能遇到几个问题。例如,如果您尝试为AlertDialog设置动画,则输入动画将无效(个人体验)。
正确的解决方案是将应用程序的主题设置为主活动屏幕(相同的ActionBar样式,相同的背景颜色)。 经过多次实验,我的应用程序中找到了满足我需求的正确解决方案。 (我的主要活动是空白背景,没有ActionBar,只是全屏个人布局)
1 - styles.xml :添加这样的新样式(删除ActionBar并设置与我的主要活动相同的背景颜色)
<style name="LoadingTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@color/white_smoke</item>
</style>
2 - AndroidManifest.xml :将主要活动的主题设置为&#34; LoadingTheme&#34;
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.company.appname.MainActivity"
android:label="@string/app_name"
android:theme="@style/LoadingTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....
</application>
最后我有一个完整的空白虚拟加载窗口,没有带有软MainActivity加载和工作动画的ActionBar。
希望有所帮助。
答案 1 :(得分:10)
<style name="Theme.MyTheme" parent="android:style/Theme" >
....
<item name="android:windowDisablePreview">true</item>
....
</style>
但请谨慎使用
答案 2 :(得分:0)
您可以在活动中的任何位置调用setContentView
方法。在调用此方法之前,它将显示一个空白屏幕。如果您想要启动画面,可以在setContentView
方法中调用onCreate
方法来显示启动画面视图。然后,当您准备好显示“主”视图时,可以使用LayoutInflater
来显示它。我还建议使用ProgressDialog
向用户显示正在加载的信息。
答案 3 :(得分:0)
在设置内容视图之前加载资源。在您不使用setContentView设置视图之前,将有一个虚拟窗口。
修改强> 避免这个屏幕。对代码进行更改。
1)不要在onCreate方法的活动中做任何繁重的工作。为它运行一个单独的线程。
2)在super.onCreate()行
之后立即设置内容视图 super.onCreate(savedInstanceState);
setContentView (R.layout.splash_screen);
3)将以下主题应用于您的应用程序。
定义主题风格
<resources>
<style name="Theme.MyTheme" parent="android:style/Theme" >
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@drawable/any_default_background</item>
</style>
</resources>
在您的清单中
<application
....
android:theme="@style/Theme.MyTheme"
....
>
多数民众赞成。
答案 4 :(得分:0)
这将为您的活动创建自定义预览窗口。
在styles.xml中创建样式,如
<style name="MyTheme" parent="@android:style/Theme.Holo.NoActionBar">
<item name="android:windowBackground">@color/myBackgroundColor</item>
</style>
在您的清单文件中,使用上面创建的主题。 例如:
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:theme="@style/MyTheme"
/>
在您的活动中,在onCreate()
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setBackgroundDrawable(null);
setContentView(R.layout.main);
}