web-dev-qa-db-fra.com

Couleur d'arrière-plan de l'activité de l'écran de démarrage

J'ai un problème avec mon écran de démarrage sur Android . Un écran de démarrage s'affiche pour l'utilisateur au démarrage long de l'application, mais le fond d'activité est toujours noir. Je veux dire que l'image bitmap d'arrière-plan (image de démarrage) est visible, mais que l'arrière-plan est noir au lieu de blanc. J'utilise une image PNG avec transparence.

Ce que j'ai:

  1. Image d'écran de démarrage PNG avec fond transparent
  2. Activité d'écran de démarrage
    [Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
    public class SplashScreen : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Do your app initialization here
            // Other long running stuff

            // Run app when done
            StartActivity(typeof(MainForm));
        }
    }
  1. Style de thème pour l'activité de l'écran de démarrage dans resources/values ​​/ styles.xml
    <resources>
      <style name="Theme.Splash" parent="@Android:style/Theme.Holo.Light">
        <item name="Android:windowBackground">@drawable/splash_centered</item>
        <item name="Android:windowNoTitle">true</item>
      </style>
    </resources>
  1. Splash drawable dans resources/drawable/splash_centered.xml
    <bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:src="@drawable/splash"
        Android:gravity="center"
        Android:background="@color/white"> <!-- this is ignored -->

Problème: Comme vous pouvez le constater, j’utilise Theme.Holo.Light comme thème parent et je l’utilise dans le reste de mon application. La lumière Holo utilise un fond blanc. Cet arrière-plan blanc n'est pas appliqué à l'arrière-plan SplashActivity . L'arrière-plan SplashActivity est toujours noir . Le bitmap d'arrière-plan (image de démarrage) est visible, mais l'arrière-plan est noir au lieu de blanc. J'utilise une image PNG avec transparence.

Question: Comment définir la couleur d'arrière-plan par défaut du thème Holo.Light (blanc) sur l'activité SplashScreen?

Remarque: J'utilise Xamarin.Android, mais le style est commun pour la plate-forme Android. Android version 4 et supérieure.

17
Ludwo

Dans resources/drawable/splash_centered.xml, utilisez une liste de couches à la place du bitmap

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item>
    <shape Android:shape="rectangle">
      <solid Android:color="@Android:color/white" />
    </shape>
  </item>
  <item>
    <bitmap Android:gravity="center" Android:src="@drawable/splash" />
  </item>
</layer-list>
29
Jon Canning

C’est ainsi que j’ai pu obtenir un fond blanc (logo centré) dans Xamarin.

[Activity (Theme= "@style/Theme.Splash", MainLauncher=true, NoHistory=true)]            
public class SplashActivity : Activity
{
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        SetContentView (Resource.Layout.splash);
        ThreadPool.QueueUserWorkItem (o => LoadActivity ());
        // Create your application here
    }
    private void LoadActivity() {
        Thread.Sleep (1000); // Simulate a long pause
        RunOnUiThread (() => StartActivity (typeof(MainActivity)));
    }
}

avec Theme.Splash comme:

<resources>
  <style name="Theme.Splash" parent="@Android:style/Theme.Light">
    <item name="Android:colorBackground">@Android:color/white</item>
    <item name="Android:windowNoTitle">true</item>
  </style>
</resources>

et le code splash.axml (Theme.Light.NoTitleBar) en tant que:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:minWidth="25px"
    Android:minHeight="25px"
    Android:gravity="center">
    <ImageView
        Android:src="@drawable/splash"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/imageView1"
        Android:layout_gravity="center" />
</LinearLayout>

NB: Il y a un léger retard dans l'apparition du png (logo), mais il reste acceptable, mieux que le fond noir 

9
Shibbs

définissez Android: drawable = "@ color/colorWhite" sur item.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@color/colorWhite" />

    <item>
        <bitmap
            Android:gravity="center"
            Android:src="@drawable/splash" />
    </item>
</layer-list>
0
Yang