android用服务建立悬浮窗,Android悬浮窗用法总结

转载请注明出处:Android悬浮窗用法总结

最近项目里用到了悬浮窗,在这里做一下总结。

WindowManager

悬浮窗主要是通过WindowManager这个类实现的,这个类有3个方法:

void addView (View view, WindowManager.LayoutParams params)//添加一个悬浮窗

void removeView (View view)//移除悬浮窗

void updateViewLayout (View view, WindowManager.LayoutParams params)//更新悬浮窗参数

WindowManager.LayoutParams

提供悬浮窗需要的参数,常用的属性有:

x:如果忽略默认的gravity,它表示窗口的x坐标。设置gravity为LEFT或START、RIGHT、END后,x表示到特定边的距离。

y:如果忽略默认的gravity,它表示窗口的y坐标。设置gravity为TOP或BOTTOM后,y表示到特定边的距离。

gravity:窗口的对齐方式,一般设为左上角,方便计算位置。

width:窗口宽度。

height:窗口高度。

type:窗口类型。

type有3种主要类型:

Application window:取值在 FIRST_APPLICATION_WINDOW 和 >LAST_APPLICATION_WINDOW 之间。是通常的、顶层的应用程序窗口。必须将 >token 设置成 activity 的 token 。

Sub_windows:取值在 FIRST_SUB_WINDOW 和 LAST_SUB_WINDOW 之>间。与顶层窗口相关联,token 必须设置为它所附着的宿主窗口的 token。

Systemwindows: 取值在 FIRST_SYSTEM_WINDOW 和 >LAST_SYSTEM_WINDOW 之间。用于特定的系统功能。它不能用于应用程序,使>用时需要特殊权限。

常用的type取值:

TYPE_SYSTEM_ALERT:系统提示,总是出现在应用程序窗口之上。

TYPE_SYSTEM_OVERLAY:系统顶层窗口,显示在其它一切内容上。此窗口不能>获得输入焦点,否则会影响锁屏。

TYPE_SYSTEM_ERROR:系统内部错误提示,显示在所有内容之上。

TYPE_PHONE:电话窗口,用于电话交互(特别是呼入)。显示在所有应用程序>之上,状态栏之下。

flag:窗口行为,如不可聚焦,非模态对话框等

常用的flag取值:

FLAG_NOT_FOCUSABLE:不许获得焦点。

FLAG_NOT_TOUCHABLE:不接受触摸屏事件。

FLAG_LAYOUT_NO_LIMITS:允许窗口延伸到屏幕外。

FLAG_LAYOUT_IN_SCREEN:窗口占满整个屏幕,忽略周围的装饰边框(例如>状态栏)。此窗口需要考虑到装饰边框的内容。

FLAG_WATCH_OUTSIDE_TOUCH:如果设置了这个flag,当触屏事件发生在窗>口之外时,可以通过设置此标志接收到一个 MotionEve

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值