7
votes

Décalages de l'écran de démarrage Android

J'ai un écran de démarrage Android qui rend un dessinable. Lorsqu'il est ouvert via un démarrage à froid, je trouve que mon actif se déplace simplement vers le haut.

Vous pouvez trouver le code approprié ci-dessous, tout le code inutile a été omis.

Voici le léger changement:

entrez la description de l'image ici

SplashActivity.java

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
    </style>
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
</resources>


4 commentaires

C'est probablement parce que vous avez une barre d'état transparente. Essayez d'ajouter android: fitsSystemWindows = "true" à votre racine FrameLayout


@TarasParshenko merci pour la suggestion, malheureusement elle existe toujours avec android:fitsSystemWindows="true"> .


hé, je suis coincé dans une erreur similaire, btw pouvez-vous me dire la ligne d'importation pour AppCompatActivity dans SplashActivity.java


Moi aussi. Le pixel Android 3a est bon. mais le changement de Galaxy S10 !!!


3 Réponses :


5
votes

J'ai trouvé la solution:

Vous devez supprimer ImageView car vous avez déjà défini splash via android: windowBackground . Supprimez également android: background = "@ color / splash_background_color" de FrameLayout pour le rendre transparent

Btw, vous pouvez supprimer res / layout / launch_screen.xml si vous ne comptez pas dessiner des mises en page sur votre splash.

Pour Activité , n'appelez pas setContentView()

Pour Fragment , ne remplacez pas onCreateView()

C'est correct, Android n'a pas besoin de définir la mise en page pour eux.


6 commentaires

La suppression de cette valeur signifie qu'elle ne sera pas rendue la première fois. Il montre un écran blanc puis le logo. Comme appose à montrer constamment le logo.


Dans ce cas, ImageView pourrait être supprimé. Le problème est que android: windowBackground et sont rendus de manière différente. On dirait que windowBackground a plus d'espace, donc le bitmap se déplace vers le haut


Si je suis correctement, la suppression de ImageView ne rend plus rien.


Oui, vous devez également supprimer android: background = "@ color / splash_background_color" de FrameLayout pour le rendre transparent


Merci beaucoup, si vous pouviez mettre à jour votre réponse avec les choses dans les commentaires, je voterai et accepterai. Juste une question, est-ce que launch_screen.xml est requis s'il ne rend qu'un FrameLayout transparent?


problème de périphériques sans frontières ?? J'ai changé style / Theme.Black.NoTitleBar en style / Theme.NoTitleBar.Fullscreen dans "android / app / src / main / res / values ​​/ styles.xml". github.com/apache/cordova-android/issues/844



0
votes

Dans styles.xml , remplacez:

<item name="android:background">@drawable/background_splash</item>

par

<item name="android:windowBackground">@drawable/background_splash</item>

Notez la windowBackground -> background

Cela résout le problème pour moi.


1 commentaires

Cela a fonctionné pour mon problème spécifique. Triste d'entendre que ce n'est pas pour le vôtre.



0
votes

Bizarre mais j'ai rencontré le même problème pour mon écran de démarrage aussi. Il se déplaçait vers le haut après que certaines tâches aient été effectuées et lors de l'ouverture de l'activité principale.

Mais après avoir essayé plusieurs combinaisons - en gros, j'ai ajouté quelques lignes de code pour récupérer des données pendant que mon écran de démarrage est affiché et que j'avais ajouté un OnDestroy override pour annuler ma file d'attente de requêtes de volée.

@Override
    protected void onDestroy() {
        super.onDestroy();
        if (queue!= null) {
            queue.cancelAll(Constant.REQUEST_Q);
        }
    }

Une fois que j'ai supprimé le remplacement onDestroy ci-dessus, l'écran de démarrage a cessé de se déplacer ou de se déplacer vers le haut. Je ne peux pas expliquer pourquoi, en publiant cette réponse ici, c'était le premier message pendant que je cherchais ce problème.


0 commentaires