WindowManager对于窗口的管理以及悬浮窗的实现

本文详细介绍了Android中的WindowManager及其LayoutParams,讲解了不同类型的窗口层级和行为标志,以及如何实现悬浮窗,特别是涉及EditText输入和与输入法的交互。此外,还探讨了悬浮窗与下层应用操作的互不影响以及拖动效果的实现。
摘要由CSDN通过智能技术生成

WindowManager

WindowManager是窗口管理器, 所有显示窗口都可以通过它来控制

  • WindowManager.addView(view, layoutParams)
    添加一个View到窗口中
  • WindowManager.updateView(view, layoutParams)
    更新窗口中的View属性
  • WindowManager.removeView(view)
    删除窗口中的View

WindowManager.LayoutParams

获取布局参数

     
     
     
WindowManager.LayoutParams params = getWindow().getAttributes() ;

创建布局参数

     
     
     
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
WindowManager.LayoutParams.type

用于确定窗口在屏幕上的显示层次

  • FIRST_APPLICATION_WINDOW
    普通应用的第一个窗口
  • TYPE_BASE_APPLICATION
    作为所有应用基础的窗口, 其他应用窗口都在其上
  • TYPE_APPLICATION
    普通应用窗口. token必须为Activity的token, 指明该窗口属于谁
  • TYPE_APPLICATION_STARTING
    应用启动时显示的窗口. 用于系统在应用能够显示之前显示一些东西
  • LAST_APPLICATION_WINDOW
    应用最后一种窗口类型
  • FIRST_SUB_WINDOW
    子窗口
  • TYPE_APPLICATION_PANEL
    在应用窗口之上的面板窗口, 出现在所依附的窗口之上
  • TYPE_APPLICATION_MEDIA
    显示媒体(如视频)的窗口, 在他们依附的窗口之下显示
  • TYPE_APPLICATION_SUB_PANEL
    应用窗口之上的子面板窗口, 显示在所依附的窗口和其他面板之上
  • TYPE_APPLICATION_ATTACHED_DIALOG
    类似TYPE_APPLICATION_PANEL, 但会作为顶层窗口, 而不是容器的子窗口
  • TYPE_APPLICATION_MEDIA_OVERLAY
    隐藏
    在媒体窗口上显示覆盖层的窗口
    显示在TYPE_APPLICATION_MEDIA和应用窗口之间
  • TYPE_APPLICATION_ABOVE_SUB_PANEL
    一个子面板窗口, 在应用窗口和子面板窗口之上
  • LAST_SUB_WINDOW
    最后一个子窗口
  • FIRST_SYSTEM_WINDOW
    第一个系统窗口
  • TYPE_STATUS_BAR
    状态栏
    只能有一个状态栏窗口. 放置在屏幕上方, 其他所有窗口都在其之下
  • TYPE_SEARCH_BAR
    搜索条
    只能有一个搜索条窗口, 放置在屏幕顶层
  • TYPE_PHONE
    电话窗口
    这是非应用窗口, 用于来电的界面
    该窗口通常置于所有应用之上, 但在状态栏下
  • TYPE_SYSTEM_ALERT
    系统窗口, 例如低电量警告弹窗, 在应用窗口之上
  • TYPE_KEYGUARD
    锁屏窗口
  • TYPE_TOAST
    透明通知. 不会拦截触摸事件, 可以向下透传
  • TYPE_SYSTEM_OVERLAY
    系统覆盖窗口, 在所有东西之上. 该窗口必须禁止获取输入焦点, 否则会变成锁屏
  • TYPE_PRIORITY_PHONE
    优先级电话, 即使锁屏也会显示
    该窗口必须禁止获取输入焦点, 否则会变成锁屏
  • TYPE_SYSTEM_DIALOG
    状态栏拉出的面板
  • TYPE_KEYGUARD_DIALOG
    锁屏
  • TYPE_SYSTEM_ERROR
    系统错误窗口, 在所有内容之上
  • TYPE_INPUT_METHOD
    输入法窗口, 在普通UI之上
    可以缩放
  • TYPE_INPUT_METHOD_DIALOG
    输入法对话框窗口, 在当前输入法窗口之上
  • TYPE_WALLPAPER
    壁纸窗口, 在任意窗口之下, 壁纸之上
  • TYPE_STATUS_BAR_PANEL
    状态栏拉出的面板
  • TYPE_SECURE_SYSTEM_OVERLAY
    安全的系统覆盖窗口, 在所有内容之上
    必须禁止获取输入焦点, 否则会变成锁屏
    同TYPE_SYSTEM_OVERLAY类似, 区别是只允许系统创建这种覆盖层, 应用无法创建
  • TYPE_DRAG
    拖拽窗口
    最多有一个, 在所有窗口之上
  • TYPE_STATUS_BAR_SUB_PANEL
    状态栏拉出的面板, 在状态栏之下
  • TYPE_POINTER
    鼠标指针
  • TYPE_NAVIGATION_BAR
    导航条
  • TYPE_VOLUME_OVERLAY
    调整音量时显示的音量窗口
  • TYPE_BOOT_PROGRESS
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值