Android WindowManager es un servicio de sistema, que es responsable de administrar la lista de Windows ordenada por Z, que Windows son visibles y cómo se presentan en la pantalla. Entre otras cosas, realiza automáticamente las transiciones y animaciones de las ventanas al abrir o cerrar una aplicación o girar la pantalla.
Cada actividad tiene una ventana que se utiliza para mostrar su contenido en la pantalla. Cuando llama a SetContentView en una actividad, adjunta esa vista a la ventana predeterminada de la actividad. La ventana predeterminada llena la pantalla, de modo que la ventana de su actividad oculta cualquier otra actividad: el WindowManager mostrará cualquier ventana en la parte superior. Por lo tanto, normalmente no necesita preocuparse por Windows: simplemente crea una actividad y Android hará el resto por usted.
Pero debe interactuar con WindowManager si desea hacer algo inusual como crear ventanas flotantes que no llenen la pantalla. Si desea crear una ventana flotante que sea visible frente a otras aplicaciones, no puede usar una actividad porque su actividad se detendrá cuando otra aplicación llegue al primer plano y su ventana se ocultará o destruirá. En su lugar, debe mostrar una ventana desde un servicio de fondo. Por ejemplo:
WindowManager.LayoutParams p = new WindowManager.LayoutParams(
// Shrink the window to wrap the content rather than filling the screen
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
// Display it on top of other application windows, but only for the current user
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
// Don't let it grab the input focus
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
// Make the underlying application window visible through any transparent parts
PixelFormat.TRANSLUCENT);
// Define the position of the window within the screen
p.gravity = Gravity.TOP | Gravity.RIGHT;
p.x = 0;
p.y = 100;
WindowManager windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
windowManager.addView(myView, p);
Para que esto funcione, deberá agregar el siguiente permiso a su AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>