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