1

我希望我的程序在每个活动中都有相同的背景颜色。所以我把这一行代码放在每个layout.xml文件的每个主要布局中。android改变背景颜色太慢

android:background="@color/background" 

到目前为止好,它的工作原理和看起来不错。然而,最近我开始注意到,当我打电话给一个新的活动时,它首先有一个白色背景,立即变为背景颜色。但是,在我眼里总是有这么一个白色,很短的时间,这真的很烦人。

有谁知道如何避免这个问题?我希望我的活动能够正常使用新的背景颜色。

编辑: 那么我使用的每一个活动都有相同的背景。这就是我如何开始新的活动:

startActivity(new Intent(getActivity(), ActivityAlbumContent.class)); 

到目前为止,我只有这一个和MainActivity但它也是在应用程序启动的MainActivity具有第一白色背景。我现在只能假设我将在后面创建的活动将会有同样的问题。

这是我的styles.xml里面。

<style name="CustomTheme" parent="android:Theme"> 
    <item name="android:windowBackground">@color/background</item> 
</style> 

windowBackground属性以某种方式不存在。我在清单文件中将此主题设置为我的应用程序,但随后崩溃。

06-30 20:43:49.048: E/AndroidRuntime(15411): FATAL EXCEPTION: main 
06-30 20:43:49.048: E/AndroidRuntime(15411): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.davlog.mplayer/com.davlog.mplayer.MainActivity}: java.lang.NullPointerException 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.access$700(ActivityThread.java:154) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Looper.loop(Looper.java:137) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.main(ActivityThread.java:5306) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invokeNative(Native Method) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invoke(Method.java:511) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at dalvik.system.NativeStart.main(Native Method) 
06-30 20:43:49.048: E/AndroidRuntime(15411): Caused by: java.lang.NullPointerException 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.davlog.mplayer.MainActivity.onCreate(MainActivity.java:29) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Activity.performCreate(Activity.java:5255) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213) 
06-30 20:43:49.048: E/AndroidRuntime(15411): ... 11 more 
+0

你打电话给新的活动?请显示一些代码。 – joao2fast4u

+0

@ joao2fast4u我发布了一些编辑。但是,对于我的新活动的调用没有什么特别之处。 – Davlog

回答

2

可以使用android:windowBackground属性的自定义主题设置一个活动的背景颜色,活动加载时包括。

例如,定义这种风格:

<style name="Theme.MyApp" parent="android:Theme"> 
    <item name="android:windowBackground">@color/my_app_color</item> 
</style> 

然后在你的清单中您所选择的主题,像这样:

<application 
     android:theme="@style/Theme.MyApp"> 

    <!- ... -> 

</application> 

这样就无需设置android:background为每个布局和将在活动加载时显示适当的颜色。

请注意,如果您支持API 14以上的任何设备,则可能需要拥有从Holo主题继承的此主题的values-14/styles.xml副本。如果你只支持14以上的设备,那么你只需要一个从Holo主题继承的主题。

+0

eclipse没有显示我的windowBackground属性,当我设置它,我的应用程序崩溃与nullpointerexception – Davlog

+0

您是否将它设置为一个主题,或试图将其设置在您的布局的XML视图? 'NullPointerException'听起来完全不相关,但是你的logcat应该能够提供更多关于它来自哪里的指导。 –

+0

等一下,我发布了我的样式代码 – Davlog