Je veux que mon application ait l'air plus professionnelle, j'ai donc décidé d'ajouter un écran d'accueil.
Comment dois-je procéder à la mise en œuvre ?
Je veux que mon application ait l'air plus professionnelle, j'ai donc décidé d'ajouter un écran d'accueil.
Comment dois-je procéder à la mise en œuvre ?
Notez que cette solution ne permettra pas à l'utilisateur d'attendre davantage : le délai de l'écran d'accueil dépend du temps de démarrage de l'application.
Lorsque vous ouvrez une application Android, vous obtenez par défaut un écran noir avec le titre et l'icône de l'application en haut de l'écran. Vous pouvez changer cela en utilisant un style/thème.
Tout d'abord, créez un style.xml dans le dossier Valeurs et ajoutez-y un style.
<style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
Au lieu d'utiliser @android:style/Theme.DeviceDefault.Light.NoActionBar
vous pouvez utiliser n'importe quel autre thème comme parent.
Ensuite, dans le Manifest.xml de votre application, ajoutez android:theme="@style/splashScreenTheme"
à votre activité principale.
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:theme="@style/splashScreenTheme" >
Troisièmement, mettez à jour votre thème dans votre activité de lancement onCreate().
protected void onCreate(Bundle savedInstanceState) {
// Make sure this is before calling super.onCreate
setTheme(R.style.mainAppTheme);
super.onCreate(savedInstanceState);
}
UPDATE Vérifiez ce poste .
Merci à @mat1h et @adelriosantiago
Est-il correct de supposer que vous avez besoin de screen_shot.png dans chacun des $APP/res/drawable-{l,m,h,xh}dpi/ ?
Merci, désolé de vous avoir dérangé avec ça, j'ai compris peu de temps après avoir posté mais j'ai oublié de supprimer.
Pour en savoir plus :
Vieille réponse :
COMMENT : Écran d'accueil simple
Ce corrigé vous montre comment afficher un écran d'accueil pendant une durée fixe au démarrage de votre application, par exemple pour des raisons d'image de marque. Par exemple, vous pouvez choisir d'afficher l'écran d'accueil pendant 3 secondes. Cependant, si vous souhaitez afficher l'écran d'accueil pendant une durée variable (par exemple, le temps de démarrage de l'application), vous devriez consulter la réponse d'Abdullah. https://stackoverflow.com/a/15832037/401025 . Cependant, il faut savoir que le démarrage de l'application peut être très rapide sur les nouveaux appareils et que l'utilisateur ne verra qu'un flash, ce qui n'est pas bon pour l'ergonomie.
Tout d'abord, vous devez définir l'écran spash dans votre fichier layout.xml
fichier
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/splash"
android:layout_gravity="center"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, splash"/>
</LinearLayout>
Et votre activité :
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(Splash.this,Menu.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
C'est tout ;)
Désolé mec... Cela ne fonctionne que sur Android 4.0 et plus. Comment puis-je le faire fonctionner sous Android 2.3.6 ? Merci, je sais que c'est une vieille question mais quelqu'un (comme moi) en aurait besoin. Merci pour votre aide.
Désolé mais il se ferme de force voici l'erreur (juste un morceau de celui-ci) FATAL EXCEPTION : main java.lang.NoClassDefFoundError : Android.app.ActivityOptions at com.LCPInt.ittsvolta.List$1.<init>(List.java:31) at com.LCPInt.ittsvolta.List.onCreate(List.java:30)
@user2606414 veuillez créer une question sur SO pour votre problème et coller votre journal d'erreurs complet.
Créer une activité : Splash
Créer un fichier XML de mise en page : splash.xml
Placez les composants de l'interface utilisateur dans le modèle splash.xml pour qu'il ressemble à ce que vous voulez.
votre Splash.java peut ressembler à ceci :
public class Splash extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
int secondsDelayed = 1;
new Handler().postDelayed(new Runnable() {
public void run() {
startActivity(new Intent(Splash.this, ActivityB.class));
finish();
}
}, secondsDelayed * 1000);
}
}
changement ActivityB.class
à l'activité que vous souhaitez lancer après l'écran d'accueil.
Vérifiez votre fichier manifeste et il devrait ressembler à
<activity android:name=".HomeScreen" android:label="@string/app_name"> </activity> <activity android:name=".Splash" android:label="@string/title_activity_splash_screen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Ce n'est pas le but de l'écran d'accueil. Cela entraîne un retard supplémentaire d'une seconde. L'écran d'accueil doit être une image pendant le chargement du premier écran de l'application. Ce lien peut vous aider. stackoverflow.com/a/7057332/869451
@efeyc : tu as 100% raison pourtant, ça a l'air plutôt joli quand l'application démarre tu ne trouves pas ?
@Suda.nese certainement pas. Les utilisateurs ne veulent pas regarder une photo, ils veulent utiliser l'application et ne pas avoir un délai inutile.
Créer un Activity
SplashScreen.java
public class SplashScreen extends Activity {
protected boolean _active = true;
protected int _splashTime = 3000; // time to display the splash screen in ms
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while (_active && (waited < _splashTime)) {
sleep(100);
if (_active) {
waited += 100;
}
}
} catch (Exception e) {
} finally {
startActivity(new Intent(SplashScreen.this,
MainActivity.class));
finish();
}
};
};
splashTread.start();
}
}
splashscreen.xml
sera comme ceci
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="600px" android:layout_height="1024px"
android:background="#FF0000">
</RelativeLayout>
Un Splash Screnn, par défaut, ne rend pas automatiquement votre application plus professionnelle. Un écran de démarrage conçu de manière professionnelle peut rendre votre application plus professionnelle, mais si vous ne savez pas comment en écrire un, quel sera le niveau de professionnalisme du reste de votre application ?
La seule raison (excuse) d'avoir un écran d'accueil est que vous faites une quantité massive de calculs ou que vous attendez que le GPS/WiFi démarre parce que votre application en dépend avant de démarrer. Sans le résultat de ces calculs ou l'accès au GPS/WiFi (etc.) votre application est morte dans l'eau, donc vous pensez que vous avez besoin d'un écran d'accueil, et que vous DEVEZ bloquer la vue de l'écran pour tous les autres programmes en cours d'exécution (y compris l'arrière-plan).
Un tel écran d'accueil devrait ressembler à votre application en plein écran pour donner l'impression qu'elle a déjà été initialisée, puis, une fois les longs calculs terminés, les derniers détails pourraient être remplis (l'image étant modifiée). Le site chance que ce soit le cas ou que ce soit la seule façon de concevoir le programme. est très petit .
Il serait préférable de permettre à l'utilisateur (et au reste du système d'exploitation) de faire autre chose pendant qu'il attend plutôt que de concevoir votre programme pour qu'il dépende de quelque chose qui prendra un certain temps (lorsque la durée de l'attente est incertaine).
Il y a déjà des icônes sur votre téléphone qui indiquent que le GPS/WiFi démarre. Le temps ou l'espace occupé par l'écran d'accueil pourrait être consacré au chargement des pré-calculs ou à l'exécution des calculs. Voir le premier lien ci-dessous pour les problèmes que vous créez et ce qui doit être considéré.
Si vous devez absolument attendre ces calculs ou le GPS/WiFi, il serait préférable de laisser l'application démarrer et d'afficher une fenêtre indiquant qu'il est nécessaire d'attendre les calculs (un message TEXTUEL "Initialisation" est suffisant). L'attente pour le GPS/WiFi est attendue (s'ils n'ont pas déjà été activés dans un autre programme), il est donc inutile d'annoncer leur temps d'attente.
N'oubliez pas que lorsque l'écran d'accueil s'affiche, votre programme est déjà en cours d'exécution. Tout ce que vous faites, c'est retarder l'utilisation de votre programme et accaparer le CPU/GPU pour faire quelque chose que la plupart des gens ne jugent pas nécessaire.
Il vaut mieux que nous ayons vraiment envie d'attendre et de voir votre écran de démarrage chaque fois que nous lançons votre programme, sinon NOUS n'aurons pas l'impression qu'il est écrit de manière très professionnelle. Faire en sorte que l'écran d'accueil soit un écran complet et une copie de l'écran du programme (afin que nous pensions qu'il est initialisé alors qu'il ne l'est pas) pourrait vous permettre d'atteindre votre objectif (de rendre votre programme plus professionnel) mais je ne parierais pas beaucoup là-dessus.
Pourquoi ne pas le faire : http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
Comment le faire : https://encrypted.google.com/search?q=Android+splash+screen+source
Il y a donc une bonne raison de ne pas le faire, mais SI vous êtes certain que votre situation ne correspond pas à ces exemples, alors le moyen de le faire est indiqué ci-dessus. Assurez-vous que votre application aura vraiment l'air plus professionnelle ou vous aurez perdu la seule raison pour laquelle vous l'avez fait.
C'est comme une chaîne YouTube qui commence chaque vidéo par une longue introduction graphique (et un Outro) ou qui ressent le besoin de raconter une blague ou d'expliquer ce qui s'est passé la semaine dernière (quand ce n'est pas une chaîne de comédie ou de life style). Montrez simplement l'émission ! (Lancez simplement le programme).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
64 votes
Pourquoi une application a-t-elle l'air plus professionnelle avec un écran d'accueil ? Je ne connais aucune application Android "professionnelle" qui en possède un.
9 votes
Je suis d'accord avec @theomega. Les écrans splash sont tout simplement ennuyeux.
95 votes
Vous ne devez afficher un écran d'accueil que si vous devez effectuer un travail de chargement en arrière-plan. Sinon, votre application a l'air plus "professionnelle" lorsque vous donnez à l'utilisateur ce qu'il attend de votre application aussi rapidement que possible. Les utilisateurs remarquent (et sont agacés par) des retards de plus de 100 ms, et vous dépassez ce seuil d'un ordre de grandeur en ajoutant un écran d'accueil.
90 votes
Kindle app, aldiko (reader), dolphin Umm le système d'exploitation :) Ils ont tous eu un splash. Opera Mobile, Mantan Reader, Maps. Je pourrais continuer. Si cela cache un chargement, alors cela permet au moins à l'utilisateur de savoir que votre application a démarré. Un délai de quelques secondes est bien mieux caché quand il y a au moins quelque chose de vous, sur l'écran.
1 votes
J'ai donné la réponse à [@StackoverFlow][1] [1] : stackoverflow.com/questions/19580276/
3 votes
@theomega : N'avez-vous jamais joué à Angry Birds ?
0 votes
A mon avis, les écrans d'accueil ne sont pas inutiles lorsqu'ils sont utilisés pour effectuer des chargements ou des validations en arrière-plan. Parfois, je dois attendre environ 20 secondes pour que Candy Crush se charge et je n'ai jamais pensé à le supprimer.
20 votes
L'écran d'accueil vous donne une excellente occasion de faire de la publicité pour le nom ou le logo de votre entreprise de jeux ou d'applications. J'aime rendre l'écran d'accueil cliquable pour que l'utilisateur ait la possibilité de passer directement au jeu. Si l'utilisateur voit toujours le logo de votre entreprise, ne serait-ce qu'une demi-seconde, chaque fois qu'il ouvre votre application, il sera plus enclin à se souvenir de qui vous êtes. Veillez simplement à ce qu'il vive une bonne expérience avec votre application.
0 votes
Voir ceci github.com/meetmehdi/GoodSplash
1 votes
La documentation officielle de Google est ici : developer.Android.com/topic/performance/vitals/
0 votes
Ici, l'homme Android.jlelse.eu/
0 votes
"Je ne connais aucune application Android "professionnelle" qui en ait une." J'en connais des tonnes : Whats App, Instagram, YouTube etc. Elles ont toutes un écran d'accueil.
1 votes
@LukasNießen les choses étaient différentes il y a 7 et 9 ans.
0 votes
Vérifiez ma solution optimale et facile : medium.com/@vatani.ahmad/