J'essaie de comprendre comment est-il possible de masquer la barre d'action pour une activité d'écran de démarrage. J'ai fait quelque chose qui cache ma barre d'action sur mon écran de démarrage, mais il y a un problème: avant que mon écran de démarrage n'apparaisse, il y a comme une activité avec une barre d'action qui apparaît brièvement ... et je ne sais pas comment la cacher !
Mon écran de démarrage n'apparaît que lorsque nous touchons l'application pour la première fois comme une introduction de l'application.
Code:
package com.example.basicmaponline;
import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
import Android.view.Window;
public class Intro extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.intro);
Thread timer = new Thread(){
public void run(){
try{
sleep(3000);
}catch (InterruptedException e) {
e.printStackTrace();
}finally{
Intent openMenu = new Intent("com.example.basicmaponline.MENU");
startActivity(openMenu);
}
}
};
timer.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
finish();
}
}
Manifeste:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.basicmaponline"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="11"
Android:targetSdkVersion="17" />
<uses-permission Android:name="Android.permission.CALL_PHONE"></uses-permission>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_GPS"></uses-permission>
<application
Android:allowBackup="true"
Android:icon="@drawable/lojacidadao"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
<activity
Android:name="com.example.basicmaponline.Intro"
Android:screenOrientation="portrait"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Menu"
Android:screenOrientation="portrait"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.MENU" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Mapa"
Android:screenOrientation="portrait"
Android:label="@string/map_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.MAPA" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Lojas"
Android:screenOrientation="portrait"
Android:label="@string/lojas_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.LOJAS" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.InfoLoja"
Android:screenOrientation="portrait"
Android:label="@string/loja_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.INFOLOJA" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Balcoes"
Android:screenOrientation="portrait"
Android:label="@string/balcoes_name" >
<intent-filter>
<action Android:name="com.example.basicmaponline.BALCOES" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Entidade"
Android:screenOrientation="portrait"
Android:label="@string/balcao_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.ENTIDADE" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Servicos"
Android:screenOrientation="portrait"
Android:label="@string/servicos_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.SERVICOS" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.InfoServico"
Android:screenOrientation="portrait"
Android:label="@string/servico_name">
<intent-filter>
<action Android:name="com.example.basicmaponline.INFOSERVICO" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.basicmaponline.Pesquisar"
Android:screenOrientation="portrait"
Android:label="@string/pesquisa_name" >
<intent-filter>
<action Android:name="com.example.basicmaponline.PESQUISAR" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
pourquoi ne pas ajouter au manifeste le thème de la première activité pour exclure la barre d'actions, et peut-être même la barre de notification?
quelque chose comme:
<application
Android:allowBackup="true"
Android:icon="@drawable/lojacidadao"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
<activity
Android:name="com.example.basicmaponline.Intro"
Android:screenOrientation="portrait"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
Cela devrait fonctionner si vous étendez la classe normale Activity
.
Si votre activité s'étend à la place AppCompatActivity
, utilisez ce thème par exemple:
<style name="AppTheme.Splash" parent="@style/Theme.AppCompat.NoActionBar">
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>
sens :
<activity ...
Android:theme="@style/AppTheme.Splash" >
...
BTW, la raison pour laquelle vous avez la barre d'action est parce que vous avez défini le thème par défaut pour l'avoir, dans la balise d'application, donc ce n'est pas une activité avant la vôtre, c'est vraiment votre propre activité de démarrage.
si votre build cible sdk 5.0 ou supérieur (le style AppTheme est Theme.AppCompat.Light.DarkActionBar.)
<activity
Android:name=".Splash"
Android:label="@string/app_name"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Votre problème ce sont ces lignes
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
Ils ne sont pas nécessaires car il ne doit pas y avoir de ActionBar
à appeler, l'écran de démarrage n'en utilise pas et doit être un Activity
complètement séparé des autres.
Vous avez besoin de deux Activities
. Un pour l'écran de démarrage avec sa propre disposition. Le 2ème est pour le Activity
principal, qui peut être un écran de connexion ou un écran de bienvenue, etc.
La classe d'écran de démarrage devrait ressembler à ceci
public class SplashScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.yourlayoutfile);
Thread loading = new Thread() {
public void run() {
try {
sleep(5000);
Intent main = new Intent(SplashScreen.this, Main.class);
startActivity(main);
}
catch (Exception e) {
e.printStackTrace();
}
finally {
finish();
}
}
};
loading.start();
}
}
fichier XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/LinearLayout1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center"
Android:orientation="vertical"
tools:context=".SplashScreen" >
// if not using an image replace with whatever is to be shown on the splash screen
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/logo" />
</LinearLayout>
Maintenant, le 2ème Activity
a la disposition avec le ActionBar
etc.
//add to AndroidManifest for SplashScreen
<activity
Android:name="<YOUR_PACKAGENAME.ACTIVITY>"
Android:theme="@style/AppTheme.NoActionBar"
.........../>
//add this styles to styles.xml
<style name="AppTheme.NoActionBar">
<item name="Android:background">@Android:color/transparent</item>
<item name="Android:windowDisablePreview">true</item>
<item name="Android:windowIsTranslucent">true</item>
<item name="Android:windowBackground">@null</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
//add this code to Activity
public class SplashScreen extends AppCompatActivity {
.
.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
.
.
.
}
}