2017-02-26 5 views
2

J'essaie de créer un écran d'accueil pour l'application Android avec cet article: Splash Screens the Right Way. Comme l'article le dit, j'ai créé LayerDrawable avec deux couches: bitmap d'arrière-plan et logo (aussi bitmap). Logo doit être situé au bas de l'écran avec indent 32dp, par exemple. Voici mon drawable:Barre d'état translucide Android mais barre de navigation non translucide (si présente)

<item 
    android:drawable="@drawable/splash_image" /> 

<item 
    android:id="@+id/logo" 
    android:bottom="@dimen/margin_splash"> 

    <bitmap 
     android:gravity="bottom|center" 
     android:src="@drawable/logo_green" /> 
</item> 

Je l'ai signalé drawable comme android:windowBackground dans mon thème param splash activité. Je veux aussi avoir une barre d'état transparente lorsque l'écran de démarrage est affiché sur les périphériques où cette fonctionnalité est supportée (API> = 19), donc j'ai créé deux fichiers de ressources pour différentes versions android et dans values-v19 \ styles.xml comme vrai. Voici mon values/styles.xml et values-v19/styles.xml:

valeurs/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowBackground">@drawable/bg_splash</item> 
    </style> 
</resources> 

et
valeurs v19/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowBackground">@drawable/bg_splash</item> 
     <item name="android:windowTranslucentStatus">true</item> 
    </style> 
</resources> 

Mais sur certains appareils Android avec NavigationBar doux mon logo est chevauché par celui-ci. Logo overlapping by NavigationBar
J'ai essayé de pointer le drapeau android:windowTranslucentNavigation comme faux mais sans succès. Est-il possible de rendre transparente la barre d'état transparente de Android Soft NavigationBar avec la barre d'état transparente ou de détecter la disponibilité de SoftBar NavigationBar dans la méthode onCreate de mon activité splash et de mettre à jour mon LayerDrawable en ajoutant le retrait inférieur du logo à la hauteur de NavigationBar?

Merci.

Répondre

0

Avez-vous essayé?

<item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentNavigation">false</item> 

Vous pouvez également un rembourrage peu de fond à votre élément bitmap dans la couche drawable.

0

J'ai rencontré le même problème et résolu ce problème en définissant les attributs suivants.

<item name="android:windowDrawsSystemBarBackgrounds">false</item> 

Cet attribut est défini sur le répertoire values-v21.