Android 窗口类型

 
  
http://blog.csdn.net/forLittleBlue/article/details/59563755

WindowManager.LayoutParams.TYPE_PHONE这是非应用窗口,提供与电话的用户交互(特别是来电)。 这些窗口通常放置在所有应用程序之上,但在状态栏后面,会被状态栏显示给覆盖,其他应用全屏时也会覆盖掉。放到状态栏区域显示时,它的点击、触摸事件会被状态栏拦截。锁屏时不显示,在多用户系统中显示在所有用户的窗口。需要android.permission.SYSTEM_ALERT_WINDOW权限。
 
  
WindowManager.LayoutParams.TYPE_TOAST可以显示在几乎所有界面之上,包括状态栏、锁屏,除了锁屏,其他情况都可以响应点击触摸事件。在多用户系统中,只显示拥有用户的窗口。API level 19 以下因无法接收无法接收触摸(点击)和按键事件。不需要android.permission.SYSTEM_ALERT_WINDOW权限也可显示,但vivo x9 6.0系统测试需要。测试Huawei mate9、6P 7.0系统时该TYPE在状态栏区域不响应触摸事件,也不能覆盖锁屏,但不需要android.permission.SYSTEM_ALERT_WINDOW权限。OPPO R9 5.1系统测试状态栏显示会被一些应用draw状态栏时所覆盖,vivo 5.1则不会,这两个都不需要android.permission.SYSTEM_ALERT_WINDOW权限即可显示。
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT:系统窗口,如低功率警报。 这些窗口总是在应用程序窗口的顶部。和TYPE_PHONE类似,除了状态栏位置,可以显示在其他任何应用界面之上,其他应用全屏时也不会覆盖它。 在多用户系统中,只显示拥有用户的窗口。需要android.permission.SYSTEM_ALERT_WINDOW权限。
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY系统覆盖窗口,需要显示在其他所有窗口之上。 这些窗口不能采取输入焦点,否则会干扰键盘锁。 因此不能响应点击、触摸事件。在多用户系统中,只显示拥有用户的窗口。如果不需要响应点击、触摸事件,这个是最好的,能覆盖所有界面之上。
WindowManager.LayoutParams.TYPE_SYSTEM_ERRORinternal system error windows, appear on top of everything they can. In multiuser systems shows only on the owning user's window. 这个可以显示所有界面之上包括锁屏等,除了状态栏不能覆盖。
WindowManager.LayoutParams.TYPE_APPLICATION: 只能配合Activity在当前APP使用TYPE_APPLICATION_ATTACHED_DIALOG: 只能配合Activity在当前APP使用

你可能感兴趣的:(Android 窗口类型)