Je dois implémenter un écran de démarrage dans mon application en nid d'abeille. J'utilise ce code dans l'activité onCreate pour afficher les éclaboussures:
setContentView(R.layout.splash);
getActionBar().hide();
et ce code pour afficher l'interface utilisateur principale après un certain temps:
setContentView(R.layout.main);
getActionBar().show();
Mais avant que onCreate ne soit appelé et que le splash n'apparaisse, il y a peu de temps lorsque la barre d'action est affichée.
Comment rendre la barre d'actions invisible?
J'ai essayé d'appliquer un thème à une activité sans barre d'action:
<item name="android:windowActionBar">false</item>
mais dans ce cas, getActionBar () renvoie toujours null et je n'ai trouvé aucun moyen de l'afficher à nouveau.
android
android-3.0-honeycomb
android-actionbar
Ilya Izhovkin
la source
la source
Theme.AppCompat.Light
... utilisez cette réponse [1] [1]: stackoverflow.com/a/25365193/1364896Réponses:
La définition
android:windowActionBar="false"
désactive vraiment l'ActionBar mais, comme vous le dites,getActionBar();
retourne null. Ceci est résolu par:Cela crée l'ActionBar et le masque immédiatement avant qu'il n'ait la chance d'être affiché.
Mais maintenant, il y a un autre problème. Après avoir inséré
windowActionBar="false"
le thème, l'activité dessine son titre de fenêtre normal au lieu d'un ActionBar.Si nous essayons d'éviter cela en utilisant certains des
*.NoTitleBar
thèmes courants ou si nous essayons de mettre<item name="android:windowNoTitle">true</item>
dans notre propre thème, cela ne fonctionnera pas.La raison en est que l'ActionBar dépend du titre de la fenêtre pour s'afficher - c'est-à-dire que l'ActionBar est un titre de fenêtre transformé.
Donc, l'astuce qui peut nous aider est d'ajouter une chose à notre thème d'activité XML:
Cela rendra le titre de la fenêtre avec une hauteur nulle, donc pratiquement invisible.
Dans votre cas, une fois que vous avez terminé d'afficher l'écran de démarrage, vous pouvez simplement appeler
et vous avez terminé. L'activité commencera sans aucun scintillement de la barre d'action ni affichage du titre de la fenêtre.
ADDON: Si vous affichez et masquez plusieurs fois l'ActionBar, vous avez peut-être remarqué que la première projection n'est pas animée. A partir de là, montrer et cacher sont animés. Si vous souhaitez également avoir une animation sur la première projection, vous pouvez utiliser ceci:
La même chose peut être réalisée avec:
mais il peut avoir besoin d'une logique supplémentaire pour vérifier s'il s'agit de la première projection de l'activité.
L'idée est de retarder un peu le masquage de l'ActionBar. D'une certaine manière, nous laissons l'ActionBar être affiché, mais nous le cachons immédiatement. Ainsi, nous allons au-delà de la première projection non animée et la prochaine projection sera considérée comme la deuxième, elle sera donc animée.
Comme vous l'aurez deviné il y a une chance que le ActionBar pourrait être vu avant qu'il ait été caché par l'opération retardée. C'est effectivement le cas. La plupart du temps, rien n'est vu, mais pourtant, de temps en temps, vous pouvez voir le scintillement de l'ActionBar pendant une fraction de seconde.
En tout cas, ce n'est pas une jolie solution, donc j'accueille toutes les suggestions.
Addition pour l'utilisateur de la barre d'action de support v7, le code sera:
la source
setTheme
? Parce que votre réponse fonctionne très bien si je définis le thème à partir du manifeste, mais si je le fais dansonCreate
(dans mon cas, le thème dépend d'une préférence pour le thème clair ou sombre), la barre d'action holo par défaut clignote avant celle que j'ai définie dans mon thème en tous cas. Mais cela vaut peut-être une autre question SO complète.android:theme="@android:style/Theme.NoTitleBar"
dans le manifeste, puissetTheme(R.style.MyTheme)
dans l'activité principaleonCreate
; Cela garantit (dans Android 4+) d'éviter le flash de l'holo par défautActionBar
avant celui que j'ai défini dans mon thème (je suis arrivé ici à la recherche d'un moyen de contourner cela; je n'ai en fait pas besoin d'un écran de démarrage).getSupportActionBar().hide();
aprèsgetWindow().requestFeature(Window.FEATURE_ACTION_BAR);
et tout explose avec un NPE. Des idées? Un problème avecTheme.AppCompat
?Utilisation de ce code simple dans votre fichier .class pour masquer la barre d'actions
la source
Si vous utilisez ActionBarSherlock, utilisez le thème Theme.Sherlock.NoActionBar dans votre activité
la source
<activity android:theme="@android:style/Theme.NoActionBar">
.Theme.Sherlock.NoActionBar
signifiera appelergetActionBar()
ougetSupportActionBar()
(pour afficher ensuite la barre d'action) renvoie null ...error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
Créez deux styles:
Définissez AppThemeNoBar comme thème d'application et AppThemeBar sur l'activité dans laquelle vous souhaitez afficher l'ActionBar. En utilisant deux styles, vous ne verrez pas la barre d'actions pendant le chargement des vues.
Vérifier ce lien Android: masquer la barre d'action pendant le chargement de la vue
la source
Salut j'ai une solution simple en utilisant 2 thèmes
Thème de l'écran de démarrage (ajoutez-le au manifeste):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/red</item> </style>
thème normal (ajoutez-le dans votre activité par setTheme (R.style.Theme)):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item> </style>
Pour prendre en charge le SDK 10:
la source
J'essayais également de masquer la barre d'action sur Android 2.2, mais aucune de ces solutions ne fonctionnait. Tout se termine par un crash. J'ai vérifié le DDMS LOg, il me disait d'utiliser 'Theme.AppCompat'.Enfin j'ai résolu le problème en changeant la
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
lignedans
android:theme="@style/Theme.AppCompat.NoActionBar"
et cela a fonctionné, mais l'interface était sombre.puis j'ai essayé
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
et finalement obtenu ce que je voulais.Après cela, lorsque j'ai recherché «AppCompat» sur le site du développeur, j'ai obtenu ceci.
Je pense donc que la solution pour Android 2.2 est
Et désolé pour mon mauvais anglais comme toujours.
la source
Le meilleur résultat pour moi a été de créer une activité avec ThemeNoTitleBar et sans contenu en tant que lanceur. Ensuite, cette activité appelle directement l'autre.
Bien sûr, si vous le souhaitez, vous pouvez ajouter du contenu à l'activité Splash, mais dans mon cas, je voulais simplement montrer l'application directement.
Manifeste:
Activité:
}
la source
Si vous en utilisez un
Activity
inclus un écran de démarrage, vous pouvez le faire si vous utilisezSherlockActionBar
Après l'écran de démarrage, vous pouvez l'afficher à nouveau avec ...
Il devrait en être de même avec le natif
ActionBar
d'Android.la source
La solution @Clerics fonctionne. Mais cela semble également être un problème avec certaines des applications natives de googles: googles, play store, talk. Aussi d'autres grandes applications comme skype.
EDIT : La solution ci-dessous m'a posé un problème pour actionbarsherlock sur api <4.0, la raison étant définieTheme ne fonctionne pas avant le sandwich à la crème glacée
Ajoutez les éléments suivants dans votre manifeste au sein de votre application ou balises d'activité:
Et puis dans votre activité principale:
la source
meilleur et simple
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
la source
2015, en utilisant la bibliothèque de support v7 avec le thème AppCompat, définissez ce thème pour votre activité.
la source
Car
Splashscreen
vous devez utiliser cette lignemanifest
et ne pas utilisergetActionBar()
et une fois lorsque Splash
Activity
est terminé dans l'Activity
utilisation principale ci-dessous ou rienla source
<item android:name="android:windowActionBar">true</item>
se débarrasse de cette erreur, mais je ne sais pas si cela fonctionne toujours.Essayez ça, ça marche pour moi:
Ci-dessous se débarrasse de la barre de titre de l'activité
Ci-dessous, élimine la barre de notification pour rendre l'activité en plein écran
(Exemple complet ci-dessous) Remarque: ces méthodes ont été appelées avant de définir l'affichage du contenu de notre activité.
la source
cela peut être utile
ajouter ceci à votre manifeste
à votre santé
la source
Le meilleur moyen que je trouve après avoir lu toutes les options disponibles est de définir le thème principal sans ActionBar, puis de configurer MyTheme en code dans le parent de toutes les activités.
Manifeste:
BaseActivity:
De cette façon, j'évite ActionBar au démarrage de l'application!
la source
Les solutions déjà publiées sont venues avec l'effet secondaire, que le premier appel .show () n'a pas animé l'ActionBar pour moi. J'ai obtenu une autre belle solution, qui a corrigé cela:
Créez un dessin transparent transparent - quelque chose comme ça:
Définissez l'arrière-plan réel de la barre d'actions sur une vue personnalisée invisible que vous définissez dans la barre d'actions:
Définissez l'arrière-plan transparent de la barre d'action dans onCreate:
Imortant: Ne masquez pas la barre d'actions immédiatement dans onCreate, mais avec un peu de retard plus tard - par exemple lorsque la mise en page est terminée avec la création:
Avant votre premier appel .show (), définissez la vue personnalisée visible:
la source
Dans le cas où vous avez null parce que vous utilisez la bibliothèque de support , au lieu de
getActionBar()
vous devez appelergetSupportActionBar()
.la source
Ajoutez simplement ceci à votre MainActivity dans la fonction onCreate.
la source
supportActionBar?.apply { hide() }
Placez votre écran de démarrage dans une activité distincte et utilisez
startActivityForResult
laonCreate
méthode de votre activité principale pour l'afficher. Cela fonctionne parce que, selon les documents:Vous ne devriez probablement le faire que si l'argument to
onCreate
estnull
(indiquant un nouveau lancement de votre activité, par opposition à un redémarrage en raison d'un changement de configuration).la source
J'avais toujours une erreur avec le pointeur nul et finalement cela a aidé lorsque j'ai appelé d'abord getWindow (). RequestFeature () puis super.onCreate ()
la source
Ajoutez simplement ceci dans votre styles.xml
la source
En fait, vous pouvez simplement définir splash
Activity
avecNoActionBar
et définir votre principalactivity
avec la barre d'action.la source
La meilleure façon de le faire est de faire de la première activité une activité vierge et du contenu que vous souhaitez mettre, puis de déclencher une autre activité après un certain temps. En suivant cette façon, vous pouvez faire de la première activité votre écran de démarrage sans barre d'action ou quoi que ce soit. Voici ma première activité
Après cela, vous pouvez mettre n'importe laquelle de vos activités comme première activité. Si vous ne voulez pas de barre d'action dans un écran, ajoutez-la simplement dans vos styles.
la source
Android studio fournit un modèle de construction pour le plein écran, si vous utilisez Android studio, vous pouvez suivre l'étape ci-dessous pour implémenter l'activité en plein écran.
Terminé. Le studio Android a fait votre travail, vous pouvez maintenant vérifier le code en plein écran.
la source
c'est la meilleure façon d'utiliser Go to java file, après
onCreate
:la source
Je me rends compte que la publication de liens n'est pas la meilleure façon de faire les choses, mais je vous recommande fortement de lire la documentation suivante de Google eux-mêmes. Ceci est le document officiel Android sur la façon de contrôler l'interface utilisateur de votre système (des choses comme la barre d'action, la barre de navigation, etc.). Malheureusement, les informations sont trop nombreuses pour être publiées directement, mais après avoir lu cela, vous comprendrez exactement comment afficher et masquer les fonctionnalités, quelle que soit la version pour laquelle vous développez, c'est si simple!
Dans le cas où le lien changerait jamais, il peut être trouvé dans la documentation officielle Android sous formation -> mise en route -> Meilleures pratiques pour l'interface utilisateur -> gestion de l' interface utilisateur du système
https://developer.android.com/training/system-ui/index.html
la source
vous pouvez utiliser ceci:
getSupportActionBar().hide();
si cela ne fonctionne pas, essayez celui-ci:si ci-dessus ne fonctionne pas, essayez comme ceci:
dans votre répertoire = res / values / style.xml, ouvrez style.xml -> il y a
parent
changement d' attribut enparent="Theme.AppCompat.Light.DarkActionBar"
si tout ça ne marche pas trop. je ne sais plus. mais pour moi ça marche.
la source