21

J'ai fait mon écran de démarrage avec ce tutoriel et cela fonctionne très bien. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ Fondamentalement, je mis en place un splascreen par thème:SplashScreen avec le vecteur Streched plein écran

<style name="ThemeSplash" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:windowBackground">@drawable/drawable_splashcreen</item> 
    </style> 

Je voulais mettre une image vectorielle à l'intérieur comme celui-ci:

(drawable_splashcreen)

<item android:drawable="@color/color_background_splash_screen" /> 

<item 
    android:drawable="@drawable/vector_najdiflet_logo" 

    /> 

L'image sera étalée en plein écran. Sur l'API 23, cela fonctionne comme il se doit. Mais sur les appareils plus anciens, il ne fait que s'allonger. J'ai essayé la largeur, la hauteur et même foiré avec des fenêtres, mais pas de succès. Une solution pour cela?

+1

Essayez de définir la hauteur et la hauteur souhaitées dans l'élément. – MrOnyszko

+0

Déjà essayé et cela ne fonctionnait pas sur les appareils plus anciens. – WinterChilly

+0

regardez à l'intérieur des graphiques vectoriels. Il y a un attribut de largeur et de hauteur là-dedans. Les graphiques vectoriels sont rendus dans un bitmap de cette taille avant d'être mis à l'échelle pour être affichés dans un écran particulier.Le problème est: Il n'y a aucune valeur que vous pouvez spécifier là-dedans qui signifie "aussi grand que l'écran". Donc, toute valeur pour un petit écran aura l'air floue sur une tablette malgré qu'il commence comme un graphique vectoriel. –

Répondre

7

Pour splash plein écran essayer d'utiliser:

android:gravity="fill_horizontal|fill_vertical" 

Sinon résoudre peut-être la solution est de créer des images séparées pour chaque taille de résolution.


les plus courantes résolutions:

  • petites = 240 x 320px (LDPI)
  • moyenne = 320 x 480px (mdpi)
  • Grand = 480 x 800px (hdpi)
  • xLarge = 640 x 960px (xhdpi)

Portrait Format:

  • LDPI = 240 x 360 pixels (0,75 x mdpi)
  • mdpi = 320 x 480 x (densité de base)
  • hdpi = 480 x 720px (1,5 x mdpi)
  • xhdpi = 640 x 960 x (2 x mdpi)
  • xxhdpi = 960 x 1440px (3 x mdpi)
  • xxxhdpi = 1080 x 1920px (4 x mdpi)

Paysage Format (format portrait inversé):

  • LDPI = 360 x 240 pixels (0,75 x mdpi)
  • MDPI = 480 x 320 x (densité de base)
  • hdpi = 720 x 480px (1.5 x mdpi)
  • xhdpi = 960 x 640 x (2 x mdpi)
  • xxhdpi = 1 440 x 960 x (3 x mdpi)
  • xxxhdpi = 1920 x 1080px (4 x mdpi)

En savoir plus sur vous pouvez trouver ici:

  1. https://design.google.com/devices/

  2. Android splash screen image sizes to fit all devices

  3. http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

+0

Je veux que le logo ait la taille d'origine, mais il se faufile en plein écran. Ce n'est pas l'effet désiré. – WinterChilly

+0

WinterChilly, vous pouvez essayer de créer une nouvelle image exactement avec la résolution de votre appareil et mettre le logo au centre sans changer la taille d'origine de celui-ci. L'arrière-plan de l'image peut être blanc ou noir pour servir de base au logo placé au centre. Avec l'image dans la bonne résolution et le logo original dans le centre peut-être vous pouvez obtenir l'effet désiré. Bonne chance! –

-3

Ne pas mettre votre image dans la fenêtre: arrière-plan, ajouter à la place que android: src pour un imageview pour la mise en page du SplashScreenActivity.

+4

Je ne veux pas créer une autre activité. Voir l'article ici ... https://www.bignerdranch.com/blog/splash-screens-the-right-way/ Image/dessinable fonctionne ici mais pas vecteur. –

-3

** Salut, vous pouvez essayer ce code:

window.getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
    | View.SYSTEM_UI_FLAG_FULLSCREEN 
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

Ce tout.

+0

Veuillez essayer d'élaborer votre réponse. Les réponses au code seulement sont désapprouvées. – Pete

+0

Je pense que ce problème utilise java pour résoudre est mieux alors résoudre par thème, il peut taper du code dans l'activité ou n'importe quel contexte. – markzog21

-2

Se référant au lien que vous avez donné, il vous manque le facteur de gravité:

<bitmap 
     **android:gravity="center"** 
     android:src="@mipmap/ic_launcher"/> 
+1

Une image bitmap n'est pas un vecteur – Softlion

-1

Ne pas mettre votre image dans la fenêtre: Arrière-plan (style.xml),

au lieu

ajouter une imageView dans le fichier de mise en page comme celui-ci,

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/vector_najdiflet_logo" 
     android:scaleType="centerCrop"/> 

changement try,

android:scaleType="centerInside" 
+1

Cela ne fonctionne pas avec le didacticiel Big Nerd Ranch car l'activité principale est démarrée avant que l'activité de démarrage ne puisse afficher sa mise en page. Il finit tout de suite et seul l'arrière-plan de la fenêtre est affiché. Je l'ai juste essayé. – WindRider

1

Utilisez bitmap et définissez votre image dans le src. Régler la gravité centre

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

    <item android:drawable="@color/color_background_splash_screen"/> 
    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/ic_logo_splash"/> 
    </item> 
</layer-list> 

splash screen

+2

ne fonctionne pas avec vecteur, car le vecteur n'est pas un bitmap – Softlion

+2

OP était spécifique à propos de l'utilisation de graphiques vectoriels: "Je voulais mettre une image vectorielle à l'intérieur comme ça" –

0

Je ne pense pas que ce soit possible de le faire avec des vecteurs, pour les appareils < API 23, car il est impossible de définir les attributs Android: hauteur et Android: largeur sur le drawable.

Pour mettre en œuvre mon écran d'accueil avec une icône centrée, je devais exporter le vecteur de mon logo à des années .png pour chaque taille de l'écran et intégrez une image bitmap dans la couche liste:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:opacity="opaque"> 
    <item android:drawable="@drawable/splash_screen_background" /> 

    <item 
     android:left="20dp" 
     android:right="20dp"> 
     <bitmap 
      android:gravity="center" 
      android:scaleType="centerInside" 
      android:src="@drawable/logo_rasterised" /> 
    </item> 

</layer-list> 

Idéalement je Je n'aimerais pas avoir d'images bitmap dans mes ressources, mais au moins l'écran de démarrage est le seul endroit où j'ai dû utiliser des bitmaps.