web-dev-qa-db-fra.com

application d'écran de démarrage et masquer la barre d'action

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>
23
Damiii

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.

53

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>
4
Asil ARSLAN

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.

2
i_me_mine
//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);
    .
    .
    .
    }

}
0
sirmagid