android TYPE_PHONE与TYPE_SYSTEM_ALERT

时间:2015-01-15 10:30:08

标签: android

使用其中一个有什么区别?

WindowManager.LayoutParams windowManagerParams = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.TYPE_PHONE, //WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            windowManagerFlags,
            PixelFormat.TRANSLUCENT
    );

2 个答案:

答案 0 :(得分:0)

正如WindowManager.LayoutParams中{{1}}所说的那样:

  

窗口类型:手机。这些是非应用程序窗口,提供用户与电话的交互(特别是来电)。这些窗口通常位于所有应用程序之上,但位于状态栏后面。在多用户系统中显示所有用户'视窗。 (Android Developer reference

     

窗口类型:系统窗口,例如低功耗警报。这些窗口始终位于应用程序窗口的顶部。在多用户系统中,仅在拥有用户的窗口中显示。 (TYPE_PHONE

所以它取决于用例和环境(多用户,单用户,一个特定用户)

答案 1 :(得分:0)

其中一个不同之处是如何处理SOFT_INPUT_ADJUST_PANSOFT_INPUT_ADJUST_RESIZE

从API 19选项SOFT_INPUT_ADJUST_PANSOFT_INPUT_ADJUST_RESIZE don't affect窗口开始,其类型为TYPE_SYSTEM_ALERTTYPE_TOASTand TYPE_VOLUME_OVERLAY for API 21 and 22;在API 23中{{ 1}}从此列表中删除。)

关于TYPE_VOLUME_OVERLAY

TYPE_SYSTEM_ALERT通常与TYPE_PHONESOFT_INPUT_ADJUST_PAN一起行动。