web-dev-qa-db-fra.com

Plein écran dans WindowManager

Ceci est mon code:

params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                PixelFormat.TRANSLUCENT);

        wm = (WindowManager) getApplicationContext()
                .getSystemService(Context.WINDOW_SERVICE);
        inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mTopView = (ViewGroup) inflater.inflate(
                R.layout.activity_invisible, null);
        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                | WindowManager.LayoutParams.FLAG_DIM_BEHIND
                | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_FULLSCREEN;
    if(keep==true){
        int value = brightnessIntent.getExtras().getInt("value");
        float v=value/255.0f;
            params.dimAmount=0;
        params.alpha=v;
        rl = (RelativeLayout) mTopView.findViewById(R.id.window);
        getWindow().setAttributes(params);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        wm.addView(mTopView, params);
}

La vue affiche toujours la barre d'état. mTopView est une fenêtre superposée. Comment puis-je obtenir la fenêtre de superposition pour couvrir tout l'écran? Je ne veux pas "masquer" la barre d'état, je veux que mon activité se superpose à celle-ci.

[MODIFIER] texte mis en évidence Je l’ai déjà dans ma méthode onCreate():

requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Et mon manifeste définit un style qui est en plein écran.

CAPTURES D'ÉCRAN

 enter image description here

Voici comment cela se passe actuellement. Je souhaite également que la superposition s’étende à la barre d’état.

14

Tout ce que je devais faire était ceci

params.flags=WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN| and the rest

Cela étend la vue de superposition sur la barre d'état.

18

Ce code de "Android Application 4 Development". vous devez gérer différentes versions d'Android 

 // Hiding the Action Bar for different Android versions 
    if (Build.VERSION.SDK_INT < 16) {
        // Hide the Action Bar on Android 4.0 and Lower
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
     }else {
        // Hide the Action Bar on Android 4.1 and Higher
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
        Android.app.ActionBar actionBar = getActionBar();
        actionBar.hide();
     }
5
Bahi Hussein

Vous pouvez masquer la barre d'état de deux manières: 

1) Définissez la ligne ci-dessous dans votre méthode d'activité onCreate().

  requestWindowFeature(Window.FEATURE_NO_TITLE);

2) Définissez le thème au niveau de l'application pour ne pas afficher la barre d'état dans l'application ci-dessous: 

<application Android:label="@string/app_name"
  Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
3
GrIsHu

Vous pouvez masquer la barre de titre en utilisant:

classe publique MainActivity étend AppCompatActivity { 

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    requestWindowFeature(Window.FEATURE_NO_TITLE);  
    getSupportActionBar().hide(); 
    setContentView(R.layout.activity_main);  


}  

et obtenir le plein écran en utilisant:

classe publique MainActivity étend AppCompatActivity { 

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_main);  


}  

}
et vous pouvez aussi utiliser parent = "Theme.AppCompat.NoActionBar" dans styles.xml.

0
venu

Pour créer une activité de superposition plein écran toujours supérieure dans Android:

public void onCreate(Bundle savedInstanceState) {       
 super.onCreate(savedInstanceState);        

 requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);             
 getWindow().setBackgroundDrawableResource(Android.R.color.transparent);
 getWindow().setFormat(PixelFormat.TRANSLUCENT);
 setContentView(R.layout.main);
 }

Le paramètre translucide doit être activé en externe dans le manifeste xml, sinon il ne fonctionnait pas non plus.

 <item name="Android:windowIsTranslucent">true</item>
0
Iman Marashi

Essaye ça.. 

   requestWindowFeature(Window.FEATURE_NO_TITLE);

votre barre d’état ne sera pas masquée, votre application sera couverte en plein écran, seule la barre d’état sera visible

           public class example extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);


    setContentView(R.layout.example);
}

}

Et pour cacher la barre d'état

vous pouvez utiliser 

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

essayer de cette façon

final WindowManager.LayoutParams params = new WindowManager.LayoutParams( 
WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN,                 
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,               
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);   

    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);    

    ViewGroup mTopView = (ViewGroup) App.inflater.inflate(R.layout.main, null);
    getWindow().setAttributes(params);
    wm.addView(mTopView, params);
0
Janmejoy