Android: Setting Window Background on launched Activity

后端 未结 3 421
终归单人心
终归单人心 2020-12-14 07:28

So I\'ve read Romain Guy\'s blog post on setting the Window background and percieved performance, and am trying to emulate that. It is such a simple solution and not sure w

相关标签:
3条回答
  • 2020-12-14 07:48

    I have ran into the same problem and wasted my day on it. We can't set the theme in java as in my case the control came to onCreate of my splash activity very late. Till that time black screen keep visible.

    This gave me clue that window has to be managed from theme which we specify in manifest.

    There is the manifest i have:

    <activity
            android:name=".main.activities.SplashScreen"
            android:theme="@style/Splash"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
    

    Now The theme i created is as follows:

    <style name="Splash" parent="@style/Theme.AppCompat.Light">
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowNoTitle">true</item>
        <item name="colorPrimaryDark">@color/green_09</item>
        <item name="colorPrimary">@color/green_09</item>
        <item name="windowActionBar">false</item>
    </style>
    

    Splash in the drawable resource which contains a bitmap resource, I have to tweak a bit to make it look perfect not stretched and in center:

    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:antialias="true"
        android:dither="true"
        android:gravity="fill"
        android:src="@drawable/splash_screen" />
    
    0 讨论(0)
  • Try setting window background before launching the new activity programmatically.

    getWindow().setBackgroundDrawableResource(R.drawable.my_drawable);
    
    0 讨论(0)
  • 2020-12-14 08:02

    it works for me if i declared this in a Theme Style in styles.xml :

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:android="http://schemas.android.com/apk/res/android"   
    xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <style name="CustomTheme" parent="android:Theme.Holo.NoActionBar">
            <item name="android:windowBackground">@color/bg_evening</item>
        </style>
    
    </resources>
    

    and in the manifest i set this theme to my application :

    <application
        android:name="com.my_app.pack"
        android:theme="@style/CustomTheme" >
    ...
    

    or to one of my activities :

    <activity
        android:name="..."
        android:theme="@style/CustomTheme">
    ...
    

    you can declare muliple theme styles and add any one of them to any of your activities, which will override the theme set to the application

    0 讨论(0)
提交回复
热议问题