2011-10-06 32 views
5

Pasar de la pantalla no completa a la pantalla completa con Android funciona bien. Sin embargo, al regresar de mi actividad de pantalla completa (un reproductor de video de pantalla completa), la actividad aparece al deslizarse hacia abajo mientras la barra de estado se anima hacia abajo. Parece que la actividad de reanudación está animada desde el modo de pantalla completa, pero con la barra de estado no allí, la actividad real se pinta como si faltara.Pasar de la pantalla completa a la pantalla completa pop/slide

He intentado jugar con mi archivo de manifiesto especificando temas/estilos. He intentado hacer esto mediante programación en onCreate() antes de que se establece la vista de contenido y varios otros lugares en el ciclo de vida de la actividad:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Parece que no hay manera de mantener la barra de estado de la animación de abajo y/o desde la vista de contenido desde el primer dibujo sin la barra de estado allí y luego ajustando hacia abajo a medida que se vuelve a mostrar.

¿Alguien tiene alguna idea al respecto? No estoy seguro si hay alguna manera de cambiar esto y es solo un comportamiento de Android.

Gracias de antemano.

Respuesta

1

En la vista raíz de la disposición actividad Añadir

androide: paddingTop = "25dp"

En el onCreate de la actividad, antes de la setContentView() añadir

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
2
private void toggleFullscreen(boolean fullscreen) 
{ 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) 
    { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    else 
    { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    getWindow().setAttributes(attrs); 
} 

Use esto seguramente funcionará

0

Pude lograr esto en dos pasos.

  1. Uso Theme.AppCompat.Light.NoActionBar en mis estilos para la actividad que quiero mostrar como pantalla completa. .

  2. usar el siguiente código en el método de la Actividad onCreate(Bundle savedInstanceState) atributos WindowManager.LayoutParams = GetWindow() getAttributes(); attributes.flags | = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow(). SetAttributes (atributos);

Espero que esto ayude. Codificación feliz :)

1

Después está mi solución:

mostrar la barra de estado del sistema antes de que termina la actividad de pantalla completa

@Override 
public void onBackPressed() { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

    mUIHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      MyFullScreenActivity.super.onBackPressed(); 
     } 
    }); 
} 
+0

esta solución me resultó más útil porque no causó que la actividad original tuviera que ajustar su relleno de diseño. –

0

No sé si esto va a funcionar para usted pero funcionó para yo. establecer la actividad de pantalla completa:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
setContentView(R.layout.my_screen); 

desactivar pantalla completa:

WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getWindow().setAttributes(attrs); 
startActivity(new Intent(getBaseContext(),NewActivity.class)); 
finish(); 
1

Esta es la manera perfecta para eliminar este problema:

private void setFullscreen(boolean fullscreen) { 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    else { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    getWindow().setAttributes(attrs); 
} 

Call esto antes super.onCreate(...) dentro de su actividad.