2011-01-10 20 views

Respuesta

4

Puede averiguar si su Activity se está ejecutando a pantalla completa a través de getWindow().getFlags().

Sin embargo, si por "una aplicación" se refiere a la solicitud de otra persona, entonces la respuesta es no.

0

Activity.hasWindowFocus() le indica si su actividad es visible para el usuario. Pero, como señala CommonsWare, es mucho más difícil saber si otra actividad está en la parte superior de la pila. Puede intentar consultar el ActivityManager (por ejemplo, ActivityManager.getProcessTasks()), pero sus métodos no proporcionan una respuesta exacta para su pregunta.

0

puede usar algo como esto;

findViewById(android.R.id.content).getHeight(); 
    getResources().getDisplayMetrics().heightPixels; 

y verificar la igualdad; espero que esto ayude;

9

Creo que Commonsware quería decir getWindow(). GetAttributes() y no getWindow(). GetFlags(); ya que getFlags no existe hasta donde yo sé. Al menos no está en doc.

necesita leer getWindow(). GetAttributes(). Flags, que es un int.

 
WindowManager.LayoutParams lp = getWindow().getAttributes(); 
int i = lp.flags; 

FLAG_FULLSCREEN = 1024 según la documentación de android. por lo que su bandera es la undécima picada de lp.flags

si este mordisco = 1, se activa la pantalla completa.

9

Sólo para completar en respuesta Sigwann:

boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0; 
boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0; 
boolean actionbarVisible = getActionBar().isShowing(); 
+3

Vale la pena teniendo cuidado en la última línea allí con el getActionBar() isShowing() - si se ha desactivado la barra de acción en el tema en lugar de ocultarlo, entonces getActionBar() puede regresar. nulo. – themightyjon

2

A partir de api11 ahora hay una manera de detectar que el uso de una documentación de la interfaz View.setOnSystemUiVisibilityChangeListener

El oyente observa lo siguiente:

Definición de interfaz para una devolución de llamada que se invocará cuando la barra de estado cambie la visibilidad. Esto informa global cambios en el estado de la IU del sistema, no lo que la aplicación está solicitando.

No sé si hay una manera de hacerlo antes de Honeycomb.

5

Tras la información de Sigwann, aquí mi código ....

public boolean isFullScreen() { 
    int flg = getWindow().getAttributes().flags; 
    boolean flag = false;  
    if ((flg & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) { 
     flag = true; 
    } 
    return flag; 
} 

simples, pero funciona!

+1

¿Qué significa este número mágico 1024? –

+0

Es solo una forma binaria de dar un número con muchos 0 – Alecs

+0

Aún así es el número mágico. Es mejor usar: WindowManager.LayoutParams.FLAG_FULLSCREEN –

0

Hay un truco agradable, usando la posición absoluta de View en la pantalla. Simplemente verifique la posición de cualquier vista superior izquierda de su diseño (puede ser invisible), si está en la posición 0,0.De esta manera:

/** 
* Check if fullscreen is activated by a position of a top left View 
* @param topLeftView View which position will be compared with 0,0 
* @return 
*/ 
public static boolean isFullscreen(View topLeftView) { 
    int location[] = new int[2]; 
    topLeftView.getLocationOnScreen(location); 
    return location[0] == 0 && location[1] == 0; 
} 
Cuestiones relacionadas