it-swarm.com.de

Splash-Screen-Aktivitätshintergrundfarbe

Ich habe ein Problem mit meinem Begrüßungsbildschirm unter Android . Der Begrüßungsbildschirm wird dem Benutzer während eines langen Anwendungsstarts angezeigt, der Aktivitätshintergrund ist jedoch immer schwarz. Ich meine, Hintergrundbitmap (Splash-Bild) ist sichtbar, aber der Hintergrund ist schwarz statt weiß. Ich verwende ein PNG-Bild mit Transparenz.

Was ich habe:

  1. PNG-Splash-Bildschirmbild mit transparentem Hintergrund
  2. Splash-Screen-Aktivität
    [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. Designstil für die Aktivität des Begrüßungsbildschirms in 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 kann in resources/drawable/splash_centered.xml gezeichnet werden
    <bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:src="@drawable/splash"
        Android:gravity="center"
        Android:background="@color/white"> <!-- this is ignored -->

Problem: Wie Sie sehen, verwende ich Theme.Holo.Light als übergeordnetes Design und verwende es in dem Rest meiner App. Holo-Licht verwendet weißen Hintergrund. Dieser weiße Hintergrund wird nicht auf den SplashActivity-Hintergrund angewendet. Der SplashActivity-Hintergrund ist immer schwarz .Hintergrund-Bitmap (Splash-Bild) ist sichtbar, der Hintergrund ist jedoch schwarz anstatt weiß. Ich verwende ein PNG-Bild mit Transparenz.

Frage: Wie wird die Hintergrundfarbe (weiß) für das Holo.Light-Design für die SplashScreen-Aktivität festgelegt?

Hinweis: Ich verwende Xamarin.Android, aber das Styling ist für Android-Plattformen üblich. Android Version 4 und höher.

17
Ludwo

Verwenden Sie in resources/drawable/splash_centered.xml anstelle der Bitmap eine Layer-Liste

<?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

So konnte ich in Xamarin weißen Hintergrundspritzer (Logo-zentriert) bekommen.

[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)));
    }
}

mit Theme.Splash als:

<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>

und splash.axml-Code (Theme.Light.NoTitleBar) als:

<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: Es gibt eine leichte Verzögerung beim Auftauchen des Splash-Png (Logo), aber es ist immer noch akzeptabel, besser als der schwarze Hintergrund. 

9
Shibbs

setzen Sie Android: drawable = "@ color/colorWhite" auf 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